TOCControl图层顺序调整

来源:互联网 发布:修改sftp端口 编辑:程序博客网 时间:2024/04/20 13:06
TOCControl本身没有实现此功能,需要开发人员编码实现,主要是利用HisTest()方法获取要移动的图层及图层索引:

     ①在OnMouseDown事件中获取需要移动的图层

     ②在OnMouseUp事件中,获取移动后的图层索引,利用IMap接口封装的MoveLayer()方法进行图层移动,完成后刷新TOCControl;

     代码实现如下:

        public ITOCControl mTOCControl;
        public ILayer pMoveLayer;
        public int toIndex;

        private void MainFrm_Load(object sender, EventArgs e)
        {

            mTOCControl = axTOCControl1.Object as ITOCControl; 
        }

       private void axTOCControl1_OnMouseDown(object sender, ITOCControlEvents_OnMouseDownEvent e)
       {
            esriTOCControlItem pItem = esriTOCControlItem.esriTOCControlItemNone;
            IBasicMap pBasMap = null;
            ILayer pLayer = null;
            object pOther = null;
            object pIndex = null;

            if (e.button == 1)
            {
                mTOCControl.HitTest(e.x, e.y, ref pItem, ref pBasMap, ref pLayer, ref pOther, ref pIndex);

if (pItem == esriTOCControlItem.esriTOCControlItemLayer)
                {
                    if (pLayer is IAnnotationSublayer) return;//如果是注记图层则返回
                    else
                        pMoveLayer = pLayer;

                }
            }
       }

        private void axTOCControl1_OnMouseUp(object sender, ITOCControlEvents_OnMouseUpEvent e)
        {
            esriTOCControlItem pItem = esriTOCControlItem.esriTOCControlItemNone;
            IBasicMap pBasMap = null;
            ILayer pLayer = null;
            object pOther = null;
            object pIndex = null;

            if (e.button == 1)
            {
                mTOCControl.HitTest(e.x, e.y, ref pItem, ref pBasMap, ref pLayer, ref pOther, ref pIndex);
                if (pMoveLayer!=pLayer)//如果是原图层则不用操作
                {
                    IMap pMap = axMapControl1.Map;
                    ILayer pTempLayer;
                    for (int i = 0; i < pMap.LayerCount; i++)
                    {
                        pTempLayer = pMap.get_Layer(i);
                        if (pTempLayer == pLayer)//获取移动后的图层索引
                            toIndex = i;
                    }
                    pMap.MoveLayer(pMoveLayer, toIndex);
                    axMapControl1.ActiveView.Refresh();
                    mTOCControl.Update();
                }
            }
        }


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 韵达快递寄快递快递单号丢了怎么办 韵达快递把我的户口本弄丢了怎么办 淘宝卖家发货与实际货物不符怎么办 寄出去的快递不知道物流单号怎么办 淘宝买家所需要的货物填错怎么办 淘宝卖家顾客拒绝签收货要怎么办 闲鱼买家申请退货退款不发货怎么办 在闲鱼买东西买家恶意退货怎么办 淘宝卖家给的退货地址是国外怎么办 淘宝顾客下单了一件代发怎么办 闲鱼上卖东西快递单号填错了怎么办 淘宝收货后快递显示不签收怎么办 淘宝快递显示签收但没收到货怎么办 国外客人收到货后嫌弃质量差怎么办 理发15涨到20客人少了怎么办 微店买家收到货了又退款怎么办 百世快递单号查不到物流信息怎么办 知道快递单号怎么查物流信息怎么办 快递单号一直查不到物流信息怎么办 买家未收到货就发起仅退款怎么办 拼多多收货码短信没了怎么办 淘宝运费险快递单号填错怎么办 如果淘宝小二判定退款不同意怎么办 商品退回卖家电话关机不收货怎么办 咸鱼等待卖家提供凭证超时怎么办 闲鱼等待卖家上传凭证超时怎么办 集运仓说有违禁品不能入库怎么办 转运停止寄到转运仓了怎么办 为什么阿里免费开店会被限制怎么办 e盘里的文件已经更改或移动怎么办 决斗之城忘了在那个服务器怎么办 ipad需要激活锁忘了id怎么办 小米非系统储存空间满了怎么办的 学生打暑假工被代理拖欠工资怎么办 华为畅享7plus进水了怎么办 华为荣耀6plus喇叭坏了怎么办 华为荣耀7x听筒声音小怎么办 华为智能手表开不了机了怎么办 华为手机重启忘记解锁密码怎么办 华为荣耀8手机开不开机怎么办 苹果5c手机开机密码忘了怎么办