在TOC中添加右键查看属性信息菜单
(1)首先,我们创建 frmAttribute 类,即存储 属性信息 的对话框
private AxMapControl m_Mapctr;
private ILayer m_pLyr;
public frmAttribute(AxMapControl pMapCtr,ILayer pLyr) //该类创建时,接受参数 "所在地图(pMapCtr)","所在图层(pLyr)"
{
InitializeComponent();
m_Mapctr = pMapCtr;
m_pLyr = pLyr;
}
private void frmAttribute_Load(object sender, EventArgs e)
{
try
{
ILayer pLayer;
pLayer = m_pLyr;
IFeatureLayer pFLayer = pLayer as IFeatureLayer;
IFeatureClass pFC = pFLayer.FeatureClass;
ILayerFields pLayerFields = pFLayer as ILayerFields;
DataSet ds = new DataSet("dsTest");
DataTable dt = new DataTable(pFLayer.Name);
//获取列名
DataColumn dc = null;
for (int i = 0; i < pLayerFields.FieldCount; i++)
{
dc = new DataColumn(pLayerFields.get_Field(i).Name);
dt.Columns.Add(dc);
dc = null;
}
//获取属性表
IFeatureCursor pFCursor = pFC.Search(null, false);
IFeature pFeature = pFCursor.NextFeature();
while (pFeature != null)
{
DataRow dr = dt.NewRow();
for (int j = 0; j < pLayerFields.FieldCount; j++)
{
if (pLayerFields.FindField(pFC.ShapeFieldName) == j)
{
dr[j] = pFC.ShapeType.ToString();
}
else
{
dr[j] = pFeature.get_Value(j).ToString();
}
}
dt.Rows.Add(dr);
pFeature = pFCursor.NextFeature();
}
//显示信息
dataGridView1.DataSource = dt;
}
catch(Exception exception)
{
MessageBox.Show("读取属性表失败:" + exception.Message);
}
}
(2) TOC 的右键菜单弹出时,记录选择的信息:
//为了配合toc右键菜单
private esriTOCControlItem toccItem = esriTOCControlItem.esriTOCControlItemNone;
private IBasicMap pBasicMap = null;
private ILayer pLayer = null;
//点击toc的图层时弹出右键菜单
private void axTOCControl1_OnMouseDown(object sender, ITOCControlEvents_OnMouseDownEvent e)
{
object unk = null;
object data = null;
if (e.button == 2)
{
//这个函数最为关键,它找到了鼠标点击 "位置(e.x , e.x.y)" "图层(pLayer)" "类型(toccItem )"
axTOCControl1.HitTest(e.x, e.y, ref toccItem, ref pBasicMap, ref pLayer, ref unk, ref data);
if (toccItem == esriTOCControlItem.esriTOCControlItemLayer)
{
pFLayer = pLayer as IFeatureLayer;
pFC = pFLayer.FeatureClass;
contextMenuStrip2.Show(axTOCControl1, new System.Drawing.Point(e.x, e.y));
}
else if (toccItem == esriTOCControlItem.esriTOCControlItemMap)
{
contextMenuStrip2.Show(axTOCControl1, new System.Drawing.Point(e.x, e.y));
}
}
}
补充:private esriTOCControlItem toccItem = esriTOCControlItem.esriTOCControlItemNone;
这里的 toccItem 有很多类型: esriTOCControlItemHeading(标题处) , esriTOCControlItemMap(地图名称处) ,
esriTOCControlItemLayer(图层名称处) , esriTOCControlItemLegendClass(图层图例处) ,
esriTOCControlItemNone(TOC中heading,map,layer,legend之外所剩余的空白区域)
(3)最后一步,在 Form1 中创建 frmAttribute 实例:
private void 属性ToolStripMenuItem_Click(object sender, EventArgs e)//在Toc上打开属性窗口
{
frmAttribute frm = new frmAttribute(axMapControl1,pLayer);
frm.ShowDialog();
}
转载于:https://www.cnblogs.com/ycbfish333/archive/2008/08/25/1275810.html
在TOC中添加右键查看属性信息菜单相关推荐
- 对于“优盘变成了RAW的文件系统,双击提示需要格式化,右键查看属性是0字节,也无法打开”的解决办法
对于"优盘变成了RAW的文件系统,双击提示需要格式化,右键查看属性是0字节,也无法打开"的解决办法 现象分析: 前几天我的优盘在学校机房的电脑上使用了一下,不知怎的文件复制到一半的 ...
- 在(CListView)列表视图中添加右键菜单的方法
使用弹出式菜单(PopMenu) 弹 出式菜单(PopMenu)大家都熟悉,在WIN98的桌面上单击鼠标右键弹出的菜单就是弹出式菜单.通常情况下,弹出式菜单在鼠标右键单击时弹出,当 然,也可以根据需要 ...
- win7计算机属性后没反应,win7系统计算机右键查看属性时没有反应的应对方案
win7系统计算机右键查看属性时没有反应的应对方案 更新时间:2016-07-13 14:29:48 阅读:200 作者:win7旗舰版系统下载 当用户查看Win7系统属性时,直接右键"计算 ...
- 计算机属性无法查看无反应,解决win7系统计算机右键查看属性时没有反应的方法有哪些...
当用户查看win7系统属性时,直接右键"计算机"选择"属性"就可快速查看.但有用户遇到了没有反应的问题.其实一般是由于注册表中有数据遭到破坏的原因,下面下载之家 ...
- python在子类中添加新的属性_pycharm实现在子类中添加一个父类没有的属性
我就废话不多说了,还是直接看代码吧! class Car(): """一次模拟汽车的简单尝试""" def __init__(self, m ...
- JS向对象中添加和删除属性
向对象中添加属性 语法: 对象.属性名 = 属性值; 对象["属性名"] = 属性值; //这种方式能够使用特殊的属性名 对象的属性名没有任何要求,不需要遵守标识符的规范,但是在开 ...
- Cesium 对象Entity点击查看属性信息
点击entity实体查看当前entity的属性信息 1.效果图 2.示例代码 <!DOCTYPE html> <html> <head lang="en&quo ...
- python在子类中添加新的属性_python - 如何创建类属性?
python - 如何创建类属性? 在python中,我可以使用@classmethod装饰器向类添加方法. 是否有类似的装饰器向类中添加属性? 我可以更好地展示我在说什么. class Exampl ...
- Linux中使用命令查看目录信息、查看当前目录路径、清楚终端内容
查看目录命令 文章目录 查看目录命令 1. 查看目录命令的使用 2. 查看当前目录路径 3. 清除终端内容 4. 小结 学习目标 能够使用Linux命令查看目录信息 1. 查看目录命令的使用 命令 说 ...
最新文章
- 生物信息学基本知识笔记
- JNI调用(github有代码可下载)
- Java对存储过程的调用方法
- 一个Web Project引用多个Java Project在Eclipse下的配置--转载
- 直播报名 | 官方解读NVIDIA黑科技:StyleGAN的架构与实现
- threadx 信号量 应用_操作系统及ThreadX简介.ppt
- 取消搜索状态_百度搜索引擎全网推广通常有哪些账户?
- UI素材模板|app ui界面的导航设计都有哪些?
- Struts2 xml配置
- iOS启动页广告XHLaunchAd
- python100天发音_GitHub - hhttss999/Python-100-Days: Python - 100天从新手到大师
- ACM-ICPC 2016 沈阳赛区现场赛 I. The Elder HDU 5956(斜率DP)
- nginx配置修改使404,500,502等nginx错误输出前端可识别json
- sequence与sequencer
- idea Maven阿里云仓库和阿里spring代理仓库配置
- linux连接多个显示器,如何在Linux Ubuntu中使用多个和外部显示器 | MOS86
- 视频教程-ADAS/HAD软件架构-嵌入式
- winmm.lib库
- Winds7 修改盘符
- 分享思科Cisco12000系列路由器的口令恢复过程