欢迎您来到GIS动力

加入收藏 免费注册 用户登陆 帮助中心
首页 新闻动态 技术专栏 银杏树下 学习考研 软件下载 求职招聘 许愿瓶 节日祝福 用户中心 精彩推荐 资源搜索 地图
专栏导航: AO开发 | SO开发 | ArcGIS桌面 | 超图桌面 | 开发语言 | 数据库 | WebGIS | 银杏文学 | 研究生考题 | FreeMap FreeTalk
   您现在位于: 首页技术专栏ArcGIS应用与开发ArcGIS其它 → 正文
在.NET中给Mapobjects地图控件添加右键菜单
07-11-12 16:09:57 作者:Aji@Gissky.com 出处:中国GIS资讯网

在一个 Windows 应用程序中,右键的弹出菜单是非常有效和有用的操作方式,在 .NET 中许多控件都有右键菜单的属性项( ContextMenu ),只要你创建一个 ContextMenu 对象然后把它赋给你需要设置弹出菜单的控件就可以了,但是在 Mapobjects 的地图控件中并不提供右键菜单属性。我们是不是就没办法给其甚至一个右键菜单?当然可以,我们可以通过其他控件来辅助实现。

具体思路如下:我们可以借助容器控件( Panel )让他浮动在 Mapobjects 地图控件之上,设定它的大小为( 0,0 )主要是让它对用户来说不可视,然后我们创建一个弹出菜单( ContextMenu )加上一些常用的菜单项如放大、缩小、漫游等。把这个弹出菜单赋给容器控件( Panel )的 ContextMenu 属性。最后在 Mapobjects 的鼠标按下事件中把容器控件重新定位到鼠标当前的位置,并使弹出菜单弹出即可。

   
1、   首先创建一个 Windows 应用程序项目 MO RightMenu Example

                                   图一
新建 Windows 应用程序

2、   在窗体中添加控件,我们用到的主要是
Mapobjects
地图控件    axMap1
Panel容器                panel1
ContextMenu菜单          contextMenu1
布局如下:


图二在应用程序窗体中添加控件

3、    添加事件编写代码,为 Mapobjects 地图控件添加 MouseDownEvent事件的处理,并在事件中写入如下代码。


图三为地图控件添加 MouseDownEvent事件的处理

private void axMap1_MouseDownEvent( object sender, ESRI.MapObjects2.Core.MouseDownEventArgs e)
{      //判断是否为鼠标右键
    if (e.button == 2)
    {
     //从新定位控件 Panel的位置 即鼠标在MO控件中的坐标加上 地图控件的起始坐标Location
     this.panel1.Location = new Point( this.axMap1.Location.X + e.x, this.axMap1.Location.Y + e.y);
     //弹出右键菜单
     this.contextMenu1.Show( this.panel1, new Point(0,0));
     }
}

    到此基本上完成了 Mapobjects 地图控件右键菜单的添加,具体添加什么内容和要处理什么方面的事情大家可以根据自己的需要来定制。此处以 C#.NET 开发环境为例,运行效果如下:


图四
程序运行效果

附:示例代码下载


(本文已被浏览 次)
发布人:admin
推荐给好友:发送给好友
上篇新闻:
下篇新闻:
相关评论
发表我的评论
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  •   相关文章  
    mo中支持滚鼠放大缩小的类
    用mo写的剔除完全重复实体的代码
    MODIS过境时间及相关
    CRS-0184: Cannot communicate with the CRS daemon
    C++开发Mo常用功能代码
    MO显示Tip
    在.NET中使用GDI+为Mapobjects构建三维直方图统计专题

    关于我们友情链接 ┋ 与我在线 ┋ 管理 ┋ TOP
     
    网站当前版本:GisPower CMS V3.0
    『GIS 动力』- http://www.gispower.org/
    联系我们:webmaster#gispower.org
    Copyright (c) 2003-2007 GisPOwer.Org. All Rights Reserved.
     

                   滇ICP备05006901号