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

  • 首先要定义一个全局变量 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 = 0; 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 = 0; 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 == 2)
                  {
                      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();
              }

       

posted on 2014-10-19 14:57  小太  阅读(340)  评论(0编辑  收藏  举报