private void axTOCControl1_OnMouseDown(object sender, ITOCControlEvents_OnMouseDownEvent e)
{
if (e.button == 2)
{
try
{
if (this.axMapControl1.LayerCount > 0)
{
esriTOCControlItem mItem = new esriTOCControlItem();
IBasicMap pMap = new MapClass();
ILayer pLayer = new FeatureLayerClass();
object pOther = null;
object pIndex = null;
//Determine what kind of item has been clicked on
this.axTOCControl1.HitTest(e.x, e.y, ref mItem, ref pMap, ref pLayer, ref pOther, ref pIndex);
IGeoFeatureLayer pGeoFeatureLayer;
pGeoFeatureLayer = (IGeoFeatureLayer)pLayer;
OpenAttributeTable(pGeoFeatureLayer);
}
}
catch(Exception ex )
{
MessageBox.Show("the following exception occurred "+ ex.ToString ());
}
}
}
private void OpenAttributeTable(IGeoFeatureLayer pLayer)
{
try
{
if (pLayer != null)
{
ILayer ipLyr = GetLayerByName(pLayer.Name);
IFeatureLayer ipFLayer = ipLyr as IFeatureLayer;
ITable ipTable = ipFLayer as ITable;
int count = ipTable.RowCount(null);
if (count == 0)
{
MessageBox.Show("该图层无实体数据可查询");
return;
}
else
{
MessageBox.Show("ok");
}
OAT frmShowF = new OAT();//(ipLyr, mapControl);
// frmShowF.lblFeaCount.Text = "该图层共有" + count.ToString() + "个要素";
// string strGeoType = ReturnGeoType(ipTable.GetRow(0).Fields.get_Field(1));
for (int j = 0; j < ipTable.Fields.FieldCount; j++)
{
frmShowF.listViewEx1.Columns.Add(ipTable.Fields.get_Field(j).Name);
}
for (int i = 0; i < count; i++)
{
ListViewItem myItem = new ListViewItem();
myItem = frmShowF.listViewEx1.Items.Add(ipTable.GetRow(i).OID.ToString());
// frmShowF.listViewEx1.Items[i]..SubItems.Add(strGeoType);
for (int j = 1; j < ipTable.Fields.FieldCount; j++)
{
// myItem.SubItems.Add(ipTable.GetRow(i).get_Value(j).ToString());
frmShowF.listViewEx1.Items[i].SubItems.Add(ipTable.GetRow(i).get_Value(j).ToString());
}
}
frmShowF.Owner = this;
frmShowF.TopLevel = true;
frmShowF.Show();
//Marshal.ReleaseComObject(ipLyr);
Marshal.ReleaseComObject(ipFLayer);
Marshal.ReleaseComObject(ipTable);
}
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
}
}