||
1、添加MapControl右键菜单
在主窗体中添加右键菜单窗体contextMenuStrip2,设计如下:
2、选择要素,可以点选,可以框选。
添加方法pointselectfeature()
public void pointselectfeature() { IGeometry g = null; IEnvelope pEnv; IActiveView pActiveView = axMapControl1.ActiveView; IMap pMap = axMapControl1.Map; pEnv = axMapControl1.TrackRectangle(); if (pEnv.IsEmpty == true) { ESRI.ArcGIS.esriSystem.tagRECT r; r.bottom = ed.y + 5; r.top = ed.y - 5; r.left = ed.x - 5; r.right = ed.x + 5; pActiveView.ScreenDisplay.DisplayTransformation.TransformRect(pEnv, ref r, 4); pEnv.SpatialReference = pActiveView.FocusMap.SpatialReference; } g = pEnv as IGeometry; axMapControl1.Map.SelectByShape(g, null, false); axMapControl1.Refresh(esriViewDrawPhase.esriViewGeoSelection, null, null); }
在MapControl右键的“选择要素”代码中,添加:
strOperType = "screenselect";
在之前我们定义的OperGeoMap()中,添加一个case,如果strOperType 为"screenselect",就运行pointselectfeature()。
3、在“图框属性”中添加如下代码:
private void 图框属性ToolStripMenuItem_Click(object sender, EventArgs e) { ESRI.ArcGIS.Framework.IComPropertySheet PSheet; PSheet = new ESRI.ArcGIS.Framework.ComPropertySheet(); ESRI.ArcGIS.esriSystem.UID pPPUID = new ESRI.ArcGIS.esriSystem.UIDClass(); PSheet.AddCategoryID(pPPUID); //投影坐标系,有点bug,选了其他坐标系后,应用按钮,地图不刷新;这个页面也不刷新。 ESRI.ArcGIS.Framework.IPropertyPage ProjectionPage = new ESRI.ArcGIS.CartoUI.MapProjectionPropPageClass();//坐标系 PSheet.AddPage(ProjectionPage); //其他,自选添加 ESRI.ArcGIS.Framework.IPropertyPage MapFramePage = new ESRI.ArcGIS.CartoUI.MapFramePropertyPageClass(); PSheet.AddPage(MapFramePage); ESRI.ArcGIS.esriSystem.ISet pMySet = new ESRI.ArcGIS.esriSystem.SetClass(); pMySet.Add(axMapControl1.Map); pMySet.Reset(); PSheet.ActivePage = 0; bool bOK = PSheet.EditProperties(pMySet, 0); axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, axMapControl1.ActiveView.Extent); }
4、同理,TOC右键菜单中,之前预留了一个“属性”,在其中输入如下代码:
private void 属性ToolStripMenuItem_Click(object sender, EventArgs e) { ESRI.ArcGIS.Framework.IComPropertySheet pComPropSheet; pComPropSheet = new ESRI.ArcGIS.Framework.ComPropertySheet(); pComPropSheet.Title = SelectedLayer_TOC.Name + " - 属性"; ESRI.ArcGIS.esriSystem.UID pPPUID = new ESRI.ArcGIS.esriSystem.UIDClass(); pComPropSheet.AddCategoryID(pPPUID); // General.... ESRI.ArcGIS.Framework.IPropertyPage pGenPage = new ESRI.ArcGIS.CartoUI.GeneralLayerPropPageClass(); pComPropSheet.AddPage(pGenPage); // Source ESRI.ArcGIS.Framework.IPropertyPage pSrcPage = new ESRI.ArcGIS.CartoUI.FeatureLayerSourcePropertyPageClass(); pComPropSheet.AddPage(pSrcPage); // Selection... ESRI.ArcGIS.Framework.IPropertyPage pSelectPage = new ESRI.ArcGIS.CartoUI.FeatureLayerSelectionPropertyPageClass(); pComPropSheet.AddPage(pSelectPage); // Display.... ESRI.ArcGIS.Framework.IPropertyPage pDispPage = new ESRI.ArcGIS.CartoUI.FeatureLayerDisplayPropertyPageClass(); pComPropSheet.AddPage(pDispPage); // Symbology.... ESRI.ArcGIS.Framework.IPropertyPage pDrawPage = new ESRI.ArcGIS.CartoUI.LayerDrawingPropertyPageClass(); pComPropSheet.AddPage(pDrawPage); // Fields... ESRI.ArcGIS.Framework.IPropertyPage pFieldsPage = new ESRI.ArcGIS.CartoUI.LayerFieldsPropertyPageClass(); pComPropSheet.AddPage(pFieldsPage); // Definition Query... ESRI.ArcGIS.Framework.IPropertyPage pQueryPage = new ESRI.ArcGIS.CartoUI.LayerDefinitionQueryPropertyPageClass(); pComPropSheet.AddPage(pQueryPage); // Labels.... ESRI.ArcGIS.Framework.IPropertyPage pSelPage = new ESRI.ArcGIS.CartoUI.LayerLabelsPropertyPageClass(); pComPropSheet.AddPage(pSelPage); // Joins & Relates.... ESRI.ArcGIS.Framework.IPropertyPage pJoinPage = new ESRI.ArcGIS.ArcMapUI.JoinRelatePageClass(); pComPropSheet.AddPage(pJoinPage); // Setup layer link ESRI.ArcGIS.esriSystem.ISet pMySet = new ESRI.ArcGIS.esriSystem.SetClass(); pMySet.Add(SelectedLayer_TOC); pMySet.Reset(); // make the symbology tab active pComPropSheet.ActivePage = 4; // show the property sheet bool bOK = pComPropSheet.EditProperties(pMySet, 0); axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, axMapControl1.ActiveView.Extent); axTOCControl1.Update(); axMapControl2.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); }
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-24 04:53
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社