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 SigmaDrawerStyle; namespace GeoSigmaViewer { public partial class PanelProperty : UserControl { public Viewer DrawViewer { get; set; } public string LayerName { get; set; } private int propertyType = 0;//0-层位属性;1-元素属性 private int propertyIndex = -1; public PanelProperty() { InitializeComponent(); } private DrawerStyle _CurrentStyle; public DrawerStyle CurrentStyle { get => _CurrentStyle; set { _CurrentStyle=value; propertyGrid.SelectedObject=null; lsvLayer.Items.Clear(); //lsvElement.Items.Clear(); if (_CurrentStyle==null) { return; } if (_CurrentStyle.CurveStyle!=null) { List lstCurve = _CurrentStyle.CurveStyle.Properties; if (lstCurve!=null&&lstCurve.Count>0) { int nIndex = 0; foreach (CurveView curve in lstCurve) { if (curve is CurveStyleBase) { continue; } nIndex++; ListViewItem lvi = new ListViewItem(""+nIndex); lvi.SubItems.Add(new ListViewItem.ListViewSubItem(lvi, curve.TypeName)); lvi.SubItems.Add(new ListViewItem.ListViewSubItem(lvi, "线")); lvi.Tag=curve; lsvLayer.Items.Add(lvi); } } } if (_CurrentStyle.PontStyle!=null) { ListViewItem lvi = new ListViewItem("1"); lvi.SubItems.Add(new ListViewItem.ListViewSubItem(lvi, "点属性")); lvi.SubItems.Add(new ListViewItem.ListViewSubItem(lvi, "点")); lvi.Tag=_CurrentStyle.PontStyle; lsvLayer.Items.Add(lvi); } if (lsvLayer.Items.Count>0) { //CurveProperty property = lsvCurve.Items[0].Tag as CurveProperty; propertyGrid.SelectedObject=lsvLayer.Items[0].Tag; } //else //{ // if (lsvPoint.Items.Count>0) // { // propertyGrid.SelectedObject=lsvPoint.Items[0]; // tabControl1.SelectTab(1); // } //} lsvLayer.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); } } private void lsvCurve_SelectedIndexChanged(object sender, EventArgs e) { if(lsvLayer.SelectedItems.Count>0) { propertyGrid.SelectedObject=lsvLayer.SelectedItems[0].Tag; propertyType=0; propertyIndex=lsvLayer.SelectedItems[0].Index; } } private void tsbLayerDel_Click(object sender, EventArgs e) { if(lsvLayer.SelectedItems.Count==0) { return; } ListViewItem lviSelect = lsvLayer.SelectedItems[0]; int nIndex = lviSelect.Index; string strType = lviSelect.SubItems[2].Text+""; lviSelect.Remove(); int nCount = lsvLayer.Items.Count; if (nIndex==nCount) { if (lsvLayer.Items.Count>0) { lsvLayer.Items[0].Selected=true; } } else { lsvLayer.Items[nIndex].Selected=true; } if (strType.Equals("线")) { if (DrawViewer.RemoveCurveStyle(LayerName, nIndex)) { DrawViewer.Redraw(); } ResetLayerIndex(); } else if (strType.Equals("点")) { if (DrawViewer.RemovePointStyle(LayerName)) { DrawViewer.Redraw(); } } if(nCount ==0) { propertyGrid.SelectedObject=null; } } private void ResetLayerIndex() { int nCount = lsvLayer.Items.Count; int nIndex = 0; for (int i=0;i /// 属性修改事件 /// /// /// private void propertyGrid_PropertyValueChanged(object s, PropertyValueChangedEventArgs e) { var varStyle = propertyGrid.SelectedObject; if(varStyle is DrawerPointStyle) { string strPointStyle = ((DrawerPointStyle)varStyle).SerialXml(); if( DrawViewer.SetLayerHowtoViewPoint(LayerName, strPointStyle)==true) { DrawViewer.Redraw(); } } else { string strCurveStyle = ((CurveView)varStyle).SerialXml(); Console.WriteLine(strCurveStyle); if (DrawViewer.SetLayerHowtoViewCurve(LayerName, strCurveStyle, propertyIndex)==true) { DrawViewer.Redraw(); } } } } }