对于TOCControl控件的学习比较重要的就是右键菜单了,例如右键菜单来实现显示属性表等功能。此次通过“显示图层名称”这样一个小功能来说一下右键菜单的实现,更多功能以后再完善。
话不多说,先上图,下图是右键TOCControl的图层。
然后点击显示图层名称之后的结果图如下:
分析:按照操作步骤首先要在TOCControl中添加OnMouseDown事件,当鼠标右键点击图层时弹出菜单(右键菜单控件是ContextMenuStrip),然后在右键菜单中添加要实现的功能,如此次添加的“显示图层名称”,最后对“右键图层名称”创建click事件,弹出窗体2 ,通过textBox显示所选图层的名称。
下面是代码部分:
ILayer pLayer = null;
private void axTOCControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.ITOCControlEvents_OnMouseDownEvent e)
{
esriTOCControlItem item = new esriTOCControlItem();
IBasicMap map = new Map() as IBasicMap;
object o = new object();
axTOCControl1.HitTest(e.x, e.y, ref item, ref map, ref pLayer, ref o, ref o);
if (e.button==2)//右击
{
contextMenuStrip1.Show(axTOCControl1, e.x, e.y);
}
}
private void btnShowLayerName_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(pLayer );//传入参数
frm.Show();
}
创建Form2窗体,并添加TextBox控件用于显示图层名称。
public Form2(ILayer pLayer)
{
this.pLayer = pLayer;
InitializeComponent();
}
ILayer pLayer = null;
private void Form2_Load(object sender, EventArgs e)
{
this.textBox1.Text = pLayer.Name;
}
以上,就可以创建TOCControl的右键菜单了,一个小小的显示图层名称功能简单显示一下创建步骤和思路,更多功能可自行研究。
注:转载请备注出处!