• 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();
                        }
                    }
                }
            }

  • 相关阅读:
    菜鸟学自动化测试(三)—-selenium 命令
    菜鸟学自动化测试(二)—-selenium IDE 功能扩展
    用js实现自动打字动画效果
    hihoCoder #1015 : KMP算法
    hihoCoder #1014 : Trie树
    android相对布局中@id和@+id的区别(原理)
    android中动态给EditText获得焦点并弹起软键盘的方法详解
    网页版井字游戏(TicTacToe)人机对战的制作(附思路和源码)
    网页版番茄时钟的制作——Pomodoro Clock
    制作网页版简易计算器(Calculator)
  • 原文地址:https://www.cnblogs.com/yanhan/p/2720113.html
Copyright © 2020-2023  润新知