博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#+AE 调整TOCControl控件中图层的显示顺序
阅读量:7286 次
发布时间:2019-06-30

本文共 2883 字,大约阅读时间需要 9 分钟。

 

基本思路如下:利用鼠标左键将需要调整顺序的图层移动至目标位置。

①需要涉及到TOCControl的OnMouseDown事件来获取要调整的图层,

②OnMouseUp事件获得目标图层和索引号,

③再利用IMap提供的MoveLayer方法,将相应调整axMapControl中的图层的显示顺序。

④最后使用TOCControl的Update方法来更新TOCControl控件中的显示顺序;

//全局变量        public ITOCControl mTOCControl;        public ILayer pMoveLayer;//需要被调整的图层;        public int toIndex;//将要调整到的目标图层的索引; //窗体加载 private void Form1_Load(object sender, EventArgs e)        {                      this.axTOCControl1.SetBuddyControl(this.axMapControl1);           mTOCControl=this.axTOCControl1.Object as ITOCControl;        }   //TOCControl控件的OnMouseDown事件,获得需要被调整的图层  private void axTOCControl1_OnMouseDown(object sender, ITOCControlEvents_OnMouseDownEvent e)        {            esriTOCControlItem item=esriTOCControlItem.esriTOCControlItemNone;            if (e.button == 1)            {                IBasicMap map = null;                ILayer layer = null;                object other = null;                object index = null;                 mTOCControl.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index);                if (item == esriTOCControlItem.esriTOCControlItemLayer)                {                    if(layer is IAnnotationSublayer)                    {                        return;                    }                    else                    {                        pMoveLayer = layer;                    }                }                            }        } //TOCControl控件的OnMouseUp事件,获得目标图层及索引 //并实现axMapControl中视图显示的索引的变化,并更新TOCControl控件中的显示顺序 private void axTOCControl1_OnMouseUp(object sender, ITOCControlEvents_OnMouseUpEvent e)        {            if (e.button == 1)            {                esriTOCControlItem item = esriTOCControlItem.esriTOCControlItemNone;                IBasicMap map = null;                ILayer layer = null;                object other = null;                object index = null;                 mTOCControl.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index);                IMap pMap = this.axMapControl1.ActiveView.FocusMap;                if(item==esriTOCControlItem.esriTOCControlItemLayer||layer!=null)                {                    if (pMoveLayer != null)                    {                        ILayer pTempLayer;                        for (int i = 0; i < pMap.LayerCount; i++)                        {                            pTempLayer = pMap.get_Layer(i);                            if (pTempLayer == layer)                            {                                toIndex = i;                            }                        }                        pMap.MoveLayer(pMoveLayer,toIndex);                        axMapControl1.ActiveView.Refresh();                        mTOCControl.Update();                    }                }            }        }

  

转载于:https://www.cnblogs.com/cuiguanghe/archive/2013/04/01/2993517.html

你可能感兴趣的文章
如何通过Word 2010发布文章到博客
查看>>
JVM监控和查看
查看>>
$.ajax与$.post,$.get的区别
查看>>
Java开发者易犯错误Top10
查看>>
Xcode快捷键整理(陆续添加中)
查看>>
分布式系统的事务处理
查看>>
VC 双缓存技术+滚动条
查看>>
strtol详解
查看>>
mysql部分参数注解
查看>>
Powershell常用命令总结
查看>>
HAProxy+Keepalived实现Web服务器负载均衡
查看>>
apache动静态编译
查看>>
导出到Excal表格
查看>>
nginx Rewrite 规则
查看>>
周珍:浅析百度调整的几大猜想
查看>>
微软异想天开!居然想让电脑厂商为它生产VR眼镜
查看>>
Linux Mint和LMDE将开发新版
查看>>
Django框架下admin.py的中文修改+xadmin中文修改
查看>>
Linux CentOS 7 设置开机运行级别为3(文本多用户级别)
查看>>
“WPF老矣,尚能饭否”—且说说WPF今生未来(上):担心
查看>>