详细教程请见:
ArcEngine简单教程汇总
通过按钮,跳转到另一个窗口,通过选择图层显示属性表
窗口2内容,comboBox(选择图层)datagridview(显示属性表)
窗口1的按钮单击事件:如果有图层,传入地图,实例化窗口2并显示
private void button1_Click(object sender, EventArgs e)
{
if (axMapControl1.LayerCount > 0)
{
formTable ft = new formTable(axMapControl1);
ft.Show();
}
}
窗口2初始化,清空comboBox中items,并将map中的图层名添加到items中,设置初始选中items[0]。
属性表更新方法,在窗体加载、comboBox选项变化时调用更新属性表。转换选择的图层为要素图层,要素图层游标查找,根据游标获取第一个要素。新建数据表对象,新建数据列,根据要素字段个数,实例化字段名为数据列并添加到数据表列中。新建数据行,当特征存在时,实例化行,字段遍历,添加对应记录,将行添加到数据表行中,将要素指向下一个要素。设置datagridview数据源为数据表
public formTable(AxMapControl pMapControl)
{
InitializeComponent();
mapControl = pMapControl;
comboBox1.Items.Clear();
for (int i = 0; i < mapControl.LayerCount; i++)
{
comboBox1.Items.Add(mapControl.get_Layer(i).Name);
}
comboBox1.Text = comboBox1.Items[0].ToString();
}
private void formTable_Load(object sender, EventArgs e)
{
dataUpdate();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
dataUpdate();
}
private void dataUpdate()
{
IFeatureLayer pFeatureLayer = mapControl.get_Layer(comboBox1.SelectedIndex) as IFeatureLayer;
IFeatureCursor featureCursor = pFeatureLayer.Search(null, false);
IFeature pFeature = featureCursor.NextFeature();
DataTable dt = new DataTable();
DataColumn column = null;
for (int i = 0; i < pFeature.Fields.FieldCount; i++)
{
column = new DataColumn(pFeature.Fields.get_Field(i).Name);
dt.Columns.Add(column);
}
DataRow row = null;
while (pFeature != null)
{
row = dt.NewRow();
for (int i = 0; i < pFeature.Fields.FieldCount; i++)
{
row[i] = pFeature.get_Value(i).ToString();
}
dt.Rows.Add(row);
pFeature = featureCursor.NextFeature();
}
dataGridView1.DataSource = dt;
}