zoukankan      html  css  js  c++  java
  • C#+AE 调整TOCControl控件中图层的显示顺序

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

    ①需要涉及到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();
                        }
                    }
                }
            }

  • 相关阅读:
    三级连动的下拉框(数据库版)吐血推荐
    行排菜单
    用AJAX制作天气预
    XmlHttp实战学习中....
    ASP+JS三级连动下拉框
    ASP连接11种数据库语法总结
    oa数据库设计
    RSS PUBData 把正常时间函数转成rss2.0的标准
    浮点数的表示和基本运算
    C#4.0新特性:可选参数,命名参数,Dynamic
  • 原文地址:https://www.cnblogs.com/yanhan/p/2720113.html
Copyright © 2011-2022 走看看