您的位置:首页 > 编程语言 > C#

ae+C#实现图层管理控件上的图层移动功能

2015-09-19 21:03 741 查看
using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using ESRI.ArcGIS.Controls;

using ESRI.ArcGIS.Carto;

namespace MoveTocCtrlItem

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

            this.axTOCControl1.SetBuddyControl(this.axMapControl1);

            //this.axTOCControl1.EnableLayerDragDrop = true;

        }

        private esriTOCControlItem toccItem = esriTOCControlItem.esriTOCControlItemNone;

        private IBasicMap basicMap = null;

        private ILayer Lyr = null;

        //移动图层

        ILayer moveLyr;

        ILayer toLyr;
        int toIndex;

        private void axTOCControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.ITOCControlEvents_OnMouseDownEvent e)

        {

            System.Object unk = null;

            System.Object data = null;

            if (e.button == 1)

            {

                axTOCControl1.HitTest(e.x, e.y, ref toccItem, ref basicMap, ref Lyr, ref unk, ref data);

                if (toccItem == esriTOCControlItem.esriTOCControlItemLayer)

                {

                    moveLyr = Lyr;

                }

            }

        }

private void axTOCControl1_OnMouseMove(object sender, ESRI.ArcGIS.Controls.ITOCControlEvents_OnMouseMoveEvent e)

        {

            if(e.button==1)

              this.axTOCControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerHourglass;

        }

private void axTOCControl1_OnMouseUp(object sender, ESRI.ArcGIS.Controls.ITOCControlEvents_OnMouseUpEvent e)

        {

            System.Object unk = null;

            System.Object data = null;

            if (e.button == 1)

            {

                axTOCControl1.HitTest(e.x, e.y, ref toccItem, ref basicMap, ref toLyr, ref unk, ref data);

                if (toccItem == esriTOCControlItem.esriTOCControlItemLayer)

                {

                    toLyr = Lyr;

                }

                for (int i = 0;i < axTOCControl1.ActiveView.FocusMap.LayerCount; i++)

                {

                    if (toLyr == axTOCControl1.ActiveView.FocusMap.get_Layer(i))

                    {

                        toIndex = i;

                        break;

                    }

                }

            }

            axTOCControl1.ActiveView.FocusMap.MoveLayer(Lyr, toIndex);

            axTOCControl1.Update();

            this.axTOCControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerDefault;

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: