第一步:新建另外一个窗体

  • 首先要定义一个全局变量 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 = ; 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 = ; 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 == )
      {
      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上实现右键的更多相关文章

  1. C# ArcEngine TOCControl上实现右键

    第一种方法:使用contextMenuStrip控件 1.新建一个窗体AttributeTable,并定义一个全局变量mLayer,让主窗体里面的axMapControl1的layer传进来,从而获取 ...

  2. 在XP、Win7/8上如何右键进入命令行

    在Win7/8上特别简单,只需要在按下shift键后,再点击鼠标右键,即可进入命令行界面.

  3. 如何在Macbook苹果笔记本上按右键点击(适用小米黑苹果)

    1.按下Control键.保持按下Control(Ctrl)键,同时点击鼠标. 这一操作相当于在一个双键鼠标上右击. 点击鼠标后,你可以松开Control键. 该方法适用于单键鼠标或者MacBook ...

  4. DevExpress的TreeList实现节点上添加自定义右键菜单并实现删除节点功能

    场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  5. DevExpress中GridView上的右键菜单

    1. 先拖一个PopupMenu和BarManage控件,设置PopupMenu的Manager属性为BarManager. 2. 先选中GridView,不是GridControl,在属性窗口中,选 ...

  6. 技巧:开启ubuntu系统桌面上的右键进入terminal命令行控制台功能

    $ sudo apt-get install nautilus-open-terminal 执行上述命令,重启. 重启命令: $ sudo reboot 注意:需要联网

  7. SkylineGlobe 6.6 三维地图上实现自定义右键菜单示例代码

    1.OnRButtonDown.htm <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...

  8. 在Win2008上运行ASP.NET 1.1程序

    在之前的文章<将Web站点由IIS6迁移至IIS7>中已经提到了关于在Win2008下运行ASP.NET 1.1程序的问题,但还不够完整,因此在这里重新整理一下. 1.要安装.net fr ...

  9. Linux 如何使用压缩与解压缩的方式将Windows下的zip压缩包上传到Linux系统

    当我们无法使用xftp方式上传文件到Linux系统时,我们可以使用在Windows下压缩文件夹,然后到Linux系统下解压缩的方式,完成整个上传工作. 第一步:在Windows系统下,将整个文件夹压缩 ...

随机推荐

  1. HTML5第二节

    第二回合:HTML5的新特性 与之前的HTML4.01相比,HTML5增加了非常多的改变: ① 新的语义元素:<article>.<aside>.<figure>. ...

  2. javascript学习总结(二):DOM常用方法。

    1 获取元素节点 a document.getElementById(id),它返回一个对象.是Document对象特有的函数,它还有这些方法: b element.getElementsByTagN ...

  3. 每日学习总结<一> 2015-8-31

      Java : 抽象类的简单概念和意义: 包名:域名相反.例: com.eric.test; 访问权限: (public/default/private/protected) public: 可以修 ...

  4. SQL Server 2014新特性——基数评估(白皮书阅读笔记)

    基数评估 目录 基数评估 说明 基数评估准确的重要性 模型假设 启用新的基数评估 验证基数评估的版本 在迁移到新的基数评估前要测试 校验基数评估 偏差问题 需要手动处理的变化 避免因为新的CE造成性能 ...

  5. GitHub一代:我们都是开源控

    我们是新的GitHub一代?GitHub塑造了新式开源文化?嗯,看看十几年开源控.Getable CTO Mikeal Rogers 是怎么说的吧: GitHub本来想做一个开源软件协作平台,结果做着 ...

  6. Gradle目录解析

    Gradle目录解析 Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具. Gradle这个工具集成了构建,测试,发布和其他,比如软件打 ...

  7. JQuery02

    一:JQuery知识点 *:JQuery的dom操作 *:动态创建dom节点 比如动态创建表格等,在js里面进行完成. *删除节点 这里面的删除就是将其放在了一个地方,并不是真的删除,之后可以使用. ...

  8. linux 新建文件的命令

    图形界面下就不用说了,终端下键入: touch test.java 就创建了一个新文件 test.java http://hovertree.com/menu/linux/ http://www.cn ...

  9. ASP.NET MVC 网站开发总结(六)——简谈Json的序列化与反序列化

    首先,先简单的谈一下什么是序列化与反序列化,序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通 ...

  10. 优秀的技术Leader

    在一个"情怀"已经泛滥的年代里,任何拿着"情怀"出来说事的人都不太受待见.犀利者会吐槽:"我早已看穿了一切". 但你是否想过,如果这世界所有 ...