using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using WWPipeLine.MapBasic.Conditions; using SuperMap.Data; using Sunny.UI; using WWPipeLine.MapBasic; using WeifenLuo.WinFormsUI.Docking; using SuperMap.UI; namespace WWPipeLine.MapTools.Conditions.FuZhuGongJu { public partial class BJroad : ConditionPanel { GeoRegion m_geo = null; Recordset rd; private int _rdsmid = 0; public BJroad() { this.ConditionPanelName = "交通道路信息管理"; InitializeComponent(); this.IsShowPanelFooter = false; } protected override void OnLoad(EventArgs e) { DatasetVector dv = ComsStatic.Datasource.Datasets["ROADPY"] as DatasetVector; if (dv == null) { Sunny.UI.UIMessageTip.ShowError("当前数据源中不包含相应的矢量数据集"); return; } rd = ComsStatic.QueryRecordsetDynamic(dv, ""); ComsStatic.setUIDataGridView(uidgvTable, ComsStatic.RecordsetToDataTable(rd)); MapControl.TrackMode = TrackMode.Track; MapControl.Action = SuperMap.UI.Action.CreatePolygon; MapControl.Tracked += new TrackedEventHandler(TrackedHandler); } private void uiButtonAdd_Click(object sender, EventArgs e) { if (m_geo is null) { Sunny.UI.UIMessageTip.ShowError("请先绘制交通道路区域"); return; } if (string.IsNullOrEmpty(uitbName.Text)) { Sunny.UI.UIMessageTip.ShowError("请先输入交通道路名称"); return; } rd.AddNew(m_geo); rd.SetFieldValue("name", uitbName.Text); rd.SetFieldValue("shape_length", ComsStatic.StringToDouble(m_geo.Perimeter)); rd.SetFieldValue("shape_area", ComsStatic.StringToDouble(m_geo.Area)); ComsStatic.ShowUIMessageTipOKorError(rd.Update(), "交通道路新增"); uitbName.Text = ""; MapControl.Map.TrackingLayer.Clear(); MapControl.Map.Refresh(); OnLoad(e); } private void uiButtonUpdate_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(uitbName.Text)) { Sunny.UI.UIMessageTip.ShowError("请先输入行政区域名称"); return; } if (_rdsmid == 0) { UIMessageTip.ShowError("请先选择需要编辑的信息!"); return; } if (rd.SeekID(_rdsmid)) { rd.Edit(); rd.SetFieldValue("name", uitbName.Text); ComsStatic.ShowUIMessageTipOKorError(rd.Update(), "交通道路编辑"); uitbName.Text = ""; OnLoad(e); } else { Sunny.UI.UIMessageTip.ShowError("信息在编辑选择时失败!"); } } private void uiButtonDel_Click(object sender, EventArgs e) { if (_rdsmid == 0) { UIMessageTip.ShowError("请先选择需要删除的信息!"); return; } if (rd.SeekID(_rdsmid)) { ComsStatic.ShowUIMessageTipOKorError(rd.Delete(), "交通道路删除"); uitbName.Text = ""; OnLoad(e); } else { Sunny.UI.UIMessageTip.ShowError("信息在删除选择时失败!"); } } private void TrackedHandler(object sender, TrackedEventArgs e) { if (e.Geometry is null) return; m_geo = e.Geometry.Clone() as GeoRegion; if (m_geo is null) { Sunny.UI.UIMessageTip.ShowError("区域绘制失败"); return; } m_geo.Style = ComsStatic.geoStyle_Red_1mm_OpaqueRate; MapControl.Map.TrackingLayer.Clear(); MapControl.Map.TrackingLayer.Add(m_geo, "GeoRegion"); MapControl.Map.Refresh(); } private void uiDataGridViewtb_SelectIndexChange(object sender, int index) { DataGridViewRow dr = uidgvTable.Rows[index]; _rdsmid = ComsStatic.StringToInt(dr.Cells["SmID"].Value.ToString()); uitbName.Text = dr.Cells["name"].Value?.ToString(); } public override void AfterClose() { ComsStatic.RecordsetDispose(rd); MapControl.Tracked -= new TrackedEventHandler(TrackedHandler); base.AfterClose(); } } }