首页 > 代码库 > TOCControl上实现右键
TOCControl上实现右键
第一步:新建另外一个窗体
- 首先要定义一个全局变量 ILayer。
- 窗体要带参数,以便将 ILayer 传递过来。
- 获取属性列表。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Geodatabase;namespace MyGIS{ public partial class Property : Form { ILayer pLayer; public Property(ILayer layer) { InitializeComponent(); pLayer = layer; } private void Property_Load(object sender, EventArgs e) { IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false); IFeature pFeature = pFeatureCursor.NextFeature(); IFields pFields = pFeatureClass.Fields; DataTable pDataTable = new DataTable(); for (int i = 0; i < pFields.FieldCount; i++)//获取所有列 { DataColumn pColumn = new DataColumn(pFields.get_Field(i).Name); pDataTable.Columns.Add(pColumn); } while (pFeature != null) { DataRow pRow = pDataTable.NewRow(); for (int i = 0; i < pFields.FieldCount; i++) { pRow[i] = pFeature.get_Value(i); } pDataTable.Rows.Add(pRow); pFeature = pFeatureCursor.NextFeature(); } dataGridView1.DataSource = pDataTable; } }}
第二步:建立右键菜单项
- 添加一个 ContextMenuStrip 控件,然后增加几个菜单项。
- 特别注意加入一个菜单项为“显示属性”。
- 判断在什么情况下显示右键菜单。
ILayer pGlobalFeatureLayer; private void axTOCControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.ITOCControlEvents_OnMouseDownEvent e) { if (e.button == 2) { esriTOCControlItem item = esriTOCControlItem.esriTOCControlItemNone; IBasicMap pBasicMap = null; ILayer pLayer = null; object other = null; object index = null; axTOCControl1.HitTest(e.x, e.y, ref item, ref pBasicMap, ref pLayer, ref other, ref index); pGlobalFeatureLayer = pLayer;//实现赋值 if (item == esriTOCControlItem.esriTOCControlItemLayer)//点击是图层的话,就显示右键菜单 { contextMenuStrip1.Show(axTOCControl1, new System.Drawing.Point(e.x, e.y));//显示右键菜单,并定义其位置,正好在鼠标处显示 } } } private void 显示属性ToolStripMenuItem_Click(object sender, System.EventArgs e) { Property frm = new Property(pGlobalFeatureLayer); frm.Text = "Attributies of" + pGlobalFeatureLayer.Name; frm.ShowDialog(); }
TOCControl上实现右键
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。