使用C#配合ArcGIS Engine进行地理信息系统开发

2019-12-26 18:06:18王冬梅

搞定~接下来就是在初始界面选定要素后跳转界面显示属性表了~

先在form1中进行预定义:


IFeatureLayer pFeatureLayer = null; 
public IFeatureLayer pGlobalFeatureLayer; //定义全局变量 
public ILayer player; 



因为决定在右击鼠标时显示选项,在Form1窗体中添加contextMenuStrip控件,添加选项”显示属性表“,在click事件中打开新form:


Form2 Ft = new Form2(player as IFeatureLayer); 
      Ft.Show(); 

然后就保证右键点击相关图层要素后能够成功打开对应属性表啦,这里主要用了TOCControl的 HitTest()方法:
publicvoid HitTest ( int X, int Y, ref esriTOCControlItem ItemType, ref IBasicMapBasicMap, ref ILayer Layer, ref object Unk, ref object Data );
其中

  • X,Y:鼠标点击的坐标;
  • ITemType:esriTOCControlItem枚举常量
  • BasicMap:绑定MapControl的IBasicMap接口
  • Layer:被点击的图层
  • Unk:TOCControl的LegendGroup对象
  • Data:LegendClass在LegendGroup中的Index。

    在TOCControl控件的 OnMouseDown 事件下添加如下代码即可~:

    
    if (axMapControl1.LayerCount > 0) 
    { 
      esriTOCControlItem pItem = new esriTOCControlItem(); 
      pGlobalFeatureLayer = new FeatureLayerClass(); 
      IBasicMap pBasicMap = new MapClass(); 
      object pOther = new object(); 
      object pIndex = new object(); 
      axTOCControl1.HitTest(e.x, e.y, ref pItem, ref pBasicMap, ref player, ref pOther, ref pIndex); 
    } 
    if (e.button == 2) 
    { 
      contextMenuStrip1.Show(axTOCControl1, e.x, e.y); 
    } 
    
    

    大功告成~~
    运行结果如下:
    右击显示属性表:

    使用C#配合ArcGIS Engine进行地理信息系统开发

    点击后出现属性表~~~: