ISymbolSelector是arcmap中的,也可以自己实现,直接使用arcmap的ISymbolSelector 弹出界面上都是英文,可以自己实现ISymbolSelector网上也有这方面的代码我现在还没有实现 添加 axTOCControl1双击事件一下是代码
private void axTOCControl1_OnDoubleClick(object sender, ITOCControlEvents_OnDoubleClickEvent e) {
esriTOCControlItem toccItem = esriTOCControlItem.esriTOCControlItemNone;
ILayer iLayer = null;
IBasicMap iBasicMap = null; object unk = null; object data = null;
if (e.button == 1)//鼠标左键按下 {
axTOCControl1.HitTest(e.x, e.y, ref toccItem, ref iBasicMap, ref iLayer, ref unk, ref data);
System.Drawing.Point pos = new System.Drawing.Point(e.x, e.y);
if (toccItem == esriTOCControlItem.esriTOCControlItemLegendClass) {
ESRI.ArcGIS.Carto.ILegendClass pLC = new LegendClassClass();
ESRI.ArcGIS.Carto.ILegendGroup pLG = new LegendGroupClass();
if (unk is ILegendGroup) {
pLG = (ILegendGroup)unk; }
pLC = pLG.get_Class((int)data); ISymbol pSym;
pSym = pLC.Symbol;
ESRI.ArcGIS.DisplayUI.ISymbolSelector pSS = new ESRI.ArcGIS.DisplayUI.SymbolSelectorClass();
bool bOK = false;
pSS.AddSymbol(pSym);
bOK = pSS.SelectSymbol(0); if (bOK) {
pLC.Symbol = pSS.GetSymbolAt(0); }
this.axMapControl1.ActiveView.Refresh(); this.axTOCControl1.Refresh(); } } }