这篇文章给出实现属性表功能的具体步骤,之后再对这些步骤中的代码进行分析。

环境准备

  • 拖动TOCControl、MapControl控件到Form窗体上,然后拖动ContextMenuStrip控件至TOCControl上。

TOCControl控件的OnMouseDown事件

如果要使用属性表功能,首先应该保证鼠标点击在TOCControl上的图层,其次应该保证是使用鼠标右键点击的。实现这些判断的代码如下:

这里的TOCControl.HitTest() 方法将鼠标点击位置的X,Y,元素类型,地图,图层等一系列值都付给参数。

private void axTOCControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.ITOCControlEvents_OnMouseDownEvent e)
{
if (e.button == 2)
{
IFeatureLayer pTocFeatureLayer = null;
esriTOCControlItem pItem = esriTOCControlItem.esriTOCControlItemNone;
IBasicMap pMap = null; object unk = null;
object data = null; ILayer pLayer = null;
axTOCControl1.HitTest(e.x, e.y, ref pItem, ref pMap, ref pLayer, ref unk, ref data);
pTocFeatureLayer = pLayer as IFeatureLayer;
if (pItem == esriTOCControlItem.esriTOCControlItemLayer && pTocFeatureLayer != null)
{
contextMenuStrip1.Show(Control.MousePosition);
}
}
}

查看图层属性表

初始化属性表到 DataGridView 中,将这个过程封装到InitUi方法中

在这个方法中,主要是设置 DataGridView 的数据源 ,其数据源属性 DataSource 应该为 DataTable 接口 ,该接口通过 DataTable.Columns.Add() 和 DataTable.Rows.Add() 来添加行与列。

public void InitUI()
{
IFeature pFeature = null;
DataTable pFeatDT = new DataTable();
DataRow pDataRow = null;
DataColumn pDataCol = null;
IField pField = null;
for(int i=0;i<_currentFeatureLayer.FeatureClass.Fields.FieldCount;i++)
{
pDataCol = new DataColumn();
pField = _currentFeatureLayer.FeatureClass.Fields.get_Field(i);
pDataCol.ColumnName = pField.AliasName; //获取字段名作为列标题
pDataCol.DataType = Type.GetType("System.Object");//定义列字段类型
pFeatDT.Columns.Add(pDataCol); //在数据表中添加字段信息
}
IFeatureCursor pFeatureCursor = _curFeatureLayer.Search(null, true);
pFeature = pFeatureCursor.NextFeature();
while (pFeature != null)
{
pDataRow = pFeatDT.NewRow();
//获取字段属性
for (int k = 0; k < pFeatDT.Columns.Count; k++)
{
pDataRow[k] = pFeature.get_Value(k);
} pFeatDT.Rows.Add(pDataRow); //在数据表中添加字段属性信息
pFeature = pFeatureCursor.NextFeature();
}
//释放指针
System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor);
//dataGridAttribute.BeginInit();
dataGridAttribute.DataSource = pFeatDT;
}

arcEngine开发之查看属性表的更多相关文章

  1. AE属性表操作

    转自chanyinhelv原文AE属性表操作 实现的操作包括:1.打开属性表:2.编辑属性表:3.增加属性列:4.数据排序:5.字段计算…… 嗯,实现的功能目前就这些吧,后续还会继续跟进,还望大家多多 ...

  2. AE二次开发中几个功能速成归纳(符号设计器、创建要素、图形编辑、属性表编辑、缓冲区分析)

    /* * 实习课上讲进阶功能所用文档,因为赶时间从网上抄抄改改,凑合能用,记录一下以备个人后用. * * ----------------------------------------------- ...

  3. 64位内核开发第四讲,查看SSDT表与showSSDT表

    目录 SSDt表与ShadowSSDT表的查看. 一丶SSDT表 1.什么是SSDT表 2.查看步骤 二丶ShadowSSDT表 1.什么是ShadowSSDT表 2.如何查看. 三丶工具介绍 SSD ...

  4. (转)arcengine+c# 修改存储在文件地理数据库中的ITable类型的表格中的某一列数据,逐行修改。更新属性表、修改属性表某列的值。

    作为一只菜鸟,研究了一个上午+一个下午,才把属性表的更新修改搞了出来,记录一下: 我的需求是: 已经在文件地理数据库中存放了一个ITable类型的表(不是要素类FeatureClass),注意不是要素 ...

  5. arcengine 开发经典帖

    http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=25575&page=1&extra= 使用ArcGIS Engine 开发自定义 ...

  6. Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题

      (转载)Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题   这几天在用spring boot开发项目, 在开发的过程中遇到一个问题hibernate在执 ...

  7. 64 位 Windows 平台开发注意要点之注册表重定向

    Window 系统错误代码 ERROR_SUCCESS,本博客中一律使用 NO_ERROR 代替.虽然 ERROR_SUCCESS 与 NO_ERROR 是完全等价的,都代表成功,但是后者却和其他错误 ...

  8. ArcEngine开发中“错误类型"****"未定义构造函数”

    from:http://blog.csdn.net/mengdong_zy/article/details/8990593 问题 在ArcEngine开发的时候,在编译时,发现出现这样的错误,出错的地 ...

  9. arcengine 开发经典帖 【强烈推荐仔细研读】

    转自原文 arcengine 开发经典帖 使用ArcGIS Engine 开发自定义GIS应用: 第一部分:使用ArcGIS Engine 发布自定义GIS应用软件-全面了解ArcGIS Engine ...

随机推荐

  1. python爬虫 - Urllib库及cookie的使用

    http://blog.csdn.net/pipisorry/article/details/47905781 lz提示一点,python3中urllib包括了py2中的urllib+urllib2. ...

  2. 程序员的软实力武器-star法则

    hhh 程序员的表达能力一直被诟病,尤其面试讲述自己的项目的时候 下面的star原则能够帮助你: 所谓STAR原则,即Situation(情景).Task(任务).Action(行动)和Result( ...

  3. 手把手带你画一个漂亮蜂窝view Android自定义view

    上一篇做了一个水波纹view  不知道大家有没有动手试试呢点击打开链接 这个效果做起来好像没什么意义,如果不加监听回调 图片就能直接替代.写这篇博客的目的是锻炼一下思维能力,以更好的面多各种自定义vi ...

  4. C/C++ Volatile关键词深度剖析(转)

    本文转载自博文C/C++ Volatile关键词深度剖析. 背景 前几天,发了一条如下的微博 (关于C/C++ Volatile关键词的使用建议): 此微博,引发了朋友们的大量讨论:赞同者有之:批评者 ...

  5. cat .git/config查看远端服务器信息(git的配置信息:远端服务器连接信息)

    本地git库中,查找其连接的远端服务器信息: 每个git库都会有一个配置信息文件.git/config. cat .git/config,可以看到信息如下: [core]         reposi ...

  6. 谈谈final

    用final修饰类 这种情况很简单,这个类不能被继承.它"绝后"了. 用final修饰方法 这里可以分两种情况. 用final修饰private方法.其实也不能这么说,因为私有方法 ...

  7. centos 下安装mysql-5.6.11

    这次是在centos6.4下安装mysql,在安装之前,你要先确定你的linux已经安装了这些包: wget, gcc-c++, ncurses-devel ,cmake, make ,perl 如果 ...

  8. Android群英传笔记——第三章:Android控件架构与自定义控件讲解

    Android群英传笔记--第三章:Android控件架构与自定义控件讲解 真的很久没有更新博客了,三四天了吧,搬家干嘛的,心累,事件又很紧,抽时间把第三章大致的看完了,当然,我还是有一点View的基 ...

  9. Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能

    Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...

  10. 导入android SlidingMenu 应用

    SlidingMenu is a helpful Android library for developers. It creates a side navigation like the Faceb ...