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

  • 首先要定义一个全局变量 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. androud 自定义属性

    在values文件夹下新建的attrs.xml文件如下: format是该属性的一种单位:有 color,String,references等. <?xml version="1.0& ...

  2. [Node.js] 使用TypeScript编写Node项目

    原文地址:http://www.moye.me/2015/04/25/using_typescript/ 入 TypeScript 坑有一段时间了,由衷的看好,所以决定在自留地絮叨一番. 是什么 Ty ...

  3. 使用 SVG 实现一个漂亮的页面预加载效果

    今天我们要为您展示如何使用 CSS 动画, SVG 和 JavaScript 创建一个简单的页面预加载效果.对于网站来说,这些预载入得画面提供了一种创造性的方法,使用户在等待内容加载的时候不会那么无聊 ...

  4. 使用 CSS3 动感的图片标题动画效果【附源码下载】

    在网站中,有很多地方会需要在图片上显示图片标题.使用 CSS3 过渡和变换可以实现动感的鼠标悬停显示效果.没有使用 JavaScript,所以只能在支持 CSS3 动画的现代浏览器中才能正常工作.您可 ...

  5. C语言打印记事本内搜索字符串所在行信息

    本程序采用C语言编写,使用方法: 1.双击“甲骨文字符串查询作品.exe”运行程序; 2.运行前请确保此可执行程序目录下有1.txt文件. 3.根据提示输入一个字符串,程序将显示存在所搜索字符串的所有 ...

  6. JS&CSS文件请求合并及压缩处理研究(四)

    本篇将会尝试对之前的代码进行相关的单元测试,验证路径合并规则的覆盖率及正确性. 熟悉 ASP.NET MVC 开发的朋友应该知道,微软在MVC框架下集成了一款名为 Microsoft.VisualSt ...

  7. Google C++ 风格指南 命名约定 转

    命名约定 最重要的一致性规则是命名管理. 命名风格快速获知名字代表是什么东东: 类型? 变量? 函数? 常量? 宏 ... ? 甚至不需要去查找类型声明. 我们大脑中的模式匹配引擎可以非常可靠的处理这 ...

  8. 大话胖model和瘦model

    今天业务完成到一定程度,查看下代码,猛然发现目前的这个代码有点奇怪.奇怪就奇怪在我的model中有很多文件,每个文件都对应数据库中的一张表,然后每个model中有很多是几乎没有什么逻辑代码的.比如: ...

  9. SpringIOC使用扩展

    在上篇博客中,我们使用Spring通过setter访问器实现了对属性的赋值,这种做法被称为设值注入.除此之外Spring还提供了通过构造方法赋值的能力,成为构造注入.下面我们通过一个小demo来了解如 ...

  10. 在浏览器输入网址到页面加载完毕中间到底发生了什么?(Browser-->Server)

    最近在学习韩老师的php视频,中间有讲到发送请求到服务器返回内容,以前对这个理解并不深刻,虽然以前也知道一部分,这次听了之后收获良多:所以我就画了个流程图,从浏览器输入网址到服务器返回信息,浏览器渲染 ...