基于AE+C#实现在TOCControl中实现指定图层删除

  今天偷下懒,就不代码长篇长篇的复制粘贴了,给大家说一个AE小白如何实现TOCControl中实现选中图层删除的方法,有点蠢,但亲测有效。这里的响应时间逻辑是,单击选中TOCControl的图层,右击弹出contextMenuStrip快捷菜单,点击删除menuItem便可以实现删除选中图层,TOCControl的OnMouseDowm事件代码如下:

 private void axTOCControl1_OnMouseDown(object sender, ITOCControlEvents_OnMouseDownEvent e)
        {
            if (axMapControl1.LayerCount == 0)//图层为空时,返回
                return;
            esriTOCControlItem item = esriTOCControlItem.esriTOCControlItemNone;//创建TOCControl中item的实力
            IBasicMap map = null;
            ILayer layer = null;
            object other = null;

            object index = null;

          //由于TOCControl控件中是无法直接返回选中图层的索引的,因此需要调用HitTest方法,根据单击的x、y坐标返回相应的参数,包括选中图层、地图、索引等

            mTOCControl.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index);
            if (e.button == 2)                //弹出右键菜单   
            {
                if (item == esriTOCControlItem.esriTOCControlItemLayer)//判断是否选中图层,因为该控件还可以选择map
                {
                    contextMenuStrip1.Show(axTOCControl1, e.x, e.y);//在鼠标单击位置弹出快捷菜单(以TOCControl控件为边界)
                    selLayer = layer;//selIlayer是一个Ilayer类的全局变量,表示已被选中的图层
                }
            }

        }

   ContextMenuStrip的删除menuItem响应的代码如下:(这里解释一下,我为什么不直接用索引来删除图层呢,因为亲测发现会出现些意料之外的问题,于是改用图层遍历来获取,如果可以用索引直接完成定位的不建议用以下复杂化的代码)

       for (int i = 0; i < axMapControl1.LayerCount; i++)
        {
             if (axMapControl1.get_Layer(i) == selLayer)//通过for循环得到选中图层索引,并直接调用DeleteLayer方法定点删除
             axMapControl1.DeleteLayer(i);
        }
        axMapControl1.ActiveView.Refresh();


  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lemon_tttea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值