2.5 调用自定义符号选择器
通过以上操作,本符号选择器雏形已经完成,我们可以3sdnMap主窗体中调用并进行测试。如果您已经完成“直接调用ArcMap中的符号选择器”这一节,请注释axTOCControl1_OnDoubleClick事件响应函数里的代码,并添加如下代码。如果您是直接学习自定义符号选择器这一节的,请先添加axTOCControl1控件的OnDoubleClick事件,再添加如下事件响应函数代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
代码
/// <summary>
/// 双击TOCControl控件时触发的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void axTOCControl1_OnDoubleClick(object sender, ITOCControlEvents_OnDoubleClickEvent e)
{
esriTOCControlItem itemType = esriTOCControlItem.esriTOCControlItemNone;
IBasicMap basicMap = null;
ILayer layer = null;
object unk = null;
object data = null;
axTOCControl1.HitTest(e.x, e.y, ref itemType, ref basicMap, ref layer, ref unk, ref data);
if (e.button == 1)
{
if(itemType==esriTOCControlItem.esriTOCControlItemLegendClass)
{
//取得图例
ILegendClass pLegendClass = ((ILegendGroup)unk).get_Class((int)data);
//创建符号选择器SymbolSelector实例
SymbolSelectorFrm SymbolSelectorFrm = new SymbolSelectorFrm(pLegendClass, layer);
if (SymbolSelectorFrm.ShowDialog() == DialogResult.OK)
{
//局部更新主Map控件
m_mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
//设置新的符号
pLegendClass.Symbol = SymbolSelectorFrm.pSymbol;
//更新主Map控件和图层控件
this.axMapControl1.ActiveView.Refresh();
this.axTOCControl1.Refresh();
}
}
}
按F5编译运行,相信你已经看到自己新手打造的符号选择器已经出现在眼前了。当然,它还比较简陋,下面我们将一起把它做得更完美些。
转自:http://www.gissky.net/Article/1562_4.htm