中国地图
GIS探索者
遥感影像纠正
GIS论坛
网站首页| GIS论坛 |新闻动态 | 技术专栏 | GIS书籍 | 资源下载 | 求职招聘 | 研究生考试 | GIS博客 | GIS空间站
欢迎光临GIS空间站!   网站地图
  专栏导航:| ArcGIS | MapInfo | TopMap | 地理信息 | 遥感 | GPS | 测绘 | WebGIS | LBS | 前沿 | 数据库 | 开发 | 行业应用
  推荐栏目:| AO开发 | 业界动态 | GIS资源 | 招聘信息 | 求职简历 | 共享软件 | 电子书籍 | 研究生考题 | 电子期刊 | GIS论文
您现在的位置: GIS空间站 >> 技术专栏 >> ArcGIS >> AO开发 >> 文章正文

利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用(四)

作者:3STECH    文章来源:中国3S网站(httpwww.863s.com)    点击数:    更新时间:2006-12-15
TopMap活动

(七) PageLayoutControl添加弹出式菜单

与给跟绑定控件协作的ToolbarControl增加ArcGIS Engine命令一样,按照前面的步骤,你也可以从ArcGIS Engine命令创建弹出式菜单。下面将向你的应用程序中增加与PageLayoutControl协作的弹出式菜单。当在PageLayoutControl可视区域点击鼠标右键的时候,弹出式菜单将显示。

1.       向类中添加如下的成员变量(红色部分):

  public class Form1 : System.Windows.Forms.Form

  {

      private ESRI.ArcGIS.MapControl.AxMapControl axMapControl1;

      private ESRI.ArcGIS.PageLayoutControl.AxPageLayoutControl axPageLayoutControl1;

      private ESRI.ArcGIS.TOCControl.AxTOCControl axTOCControl1;

      private ESRI.ArcGIS.ToolbarControl.AxToolbarControl axToolbarControl1;

 

  private IToolbarMenu m_ToolbarMenu = new ToolbarMenuClass(); // 弹出式菜单

// ……

2.       Form_Load事件中向ToolbarControl增加命令代码的后面加载文档代码的前面增加如下代码。

        private void Form1_Load(object sender, System.EventArgs e)

        {

            // 前面是增加地图导航的代码……

           

// 共享ToolbarControl的命令池

            m_ToolbarMenu.CommandPool = axToolbarControl1.CommandPool;

 

            // ToolbarMenu增加命令

            progID = "esriControlToolsPageLayout.ControlsPageZoomInFixedCommand";

            m_ToolbarMenu.AddItem(progID, -1, -1, false,

                esriCommandStyles.esriCommandStyleIconAndText);

 

            progID = "esriControlToolsPageLayout.ControlsPageZoomOutFixedCommand";

            m_ToolbarMenu.AddItem(progID, -1, -1, false,

                esriCommandStyles.esriCommandStyleIconAndText);

 

            progID = "esriControlToolsPageLayout.ControlsPageZoomWholePageCommand";

            m_ToolbarMenu.AddItem(progID, -1, -1, false,

                esriCommandStyles.esriCommandStyleIconAndText);

 

            progID = "esriControlToolsPageLayout.ControlsPageZoomPageToLastExtentBackCommand";

            m_ToolbarMenu.AddItem(progID, -1, -1, true,

                esriCommandStyles.esriCommandStyleIconAndText);

 

            progID = "esriControlToolsPageLayout.ControlsPageZoomPageToLastExtentForwardCommand";

            m_ToolbarMenu.AddItem(progID, -1, -1, false,

                esriCommandStyles.esriCommandStyleIconAndText);

 

            // 设置与PageLayoutControl挂接

     m_ToolbarMenu.SetHook(axPageLayoutControl1);

    

           // 后面是加载图形文档的代码……

           // ……

3.       在设计模式显示窗体并从属性窗口中选择axPageLayoutControl1,显示axPageLayoutControl事件。双击onMouseDown事件,向代码窗口中增加事件处理代码。

4.       axPageLayoutControl1_onMouseDown事件中增加如下代码:

        private void axPageLayoutControl1_onMouseDown(object sender, ESRI.ArcGIS.PageLayoutControl.IPageLayoutControlEvents_onMouseDownEvent e)

        {

            // 弹出ToolbarMenu

            if ( e.button == 2)

            {

                m_ToolbarMenu.PopupMenu(e.x, e.y, axPageLayoutControl1.hWnd);

            }

}

5.     生成并运行应用程序。在PageLayoutControl的显示区域单击右键以显示弹出菜单,并为页面布局导航。

 

(八) TOCControl中控制标签编辑

TOCControl默认允许用户自动地切换图层的可见性并改变显示在目录表中的名称。你可以增加代码防止用户在编辑名称时输入空的字符串。

1.       Form_Load事件的开始增加下列代码。

        private void Form1_Load(object sender, System.EventArgs e)

        {

            // 当缩放时禁止重绘

            this.SetStyle(ControlStyles.EnableNotifyMessage, true);

 

            // 设置标签编辑为手动方式

            axTOCControl1.LabelEdit = esriTOCControlEdit.esriTOCControlManual;

 

           // 后面是加载文档代码

           // ……

2.       在设计模式显示窗体并从属性窗口选择AxTOCControl1控件,显示AxTOCControl事件。双击OnEndLabelEdit向代码窗口添加事件处理函数。

3.     axTOCControl1_OnEndLabelEdit事件中添加以下代码:

        private void axTOCControl1_OnEndLabelEdit(object sender, ESRI.ArcGIS.TOCControl.ITOCControlEvents_OnEndLabelEditEvent e)

        {

            // 禁止在编辑标签时键入空字串

            string newLabel = e.newLabel;

            if ( newLabel.Trim() == "" )

            {

                e.canEdit = false;

            }

        }

4.       生成并生成应用程序。编辑TOCControl控件的地图、图层、标题或图例类的标签,在其上点击一次,然后再点一次调用标签编辑。试着用空字串替代标签。在编辑期间,你可以随时使用键盘上的ESC键取消编辑。

文章录入:gissky    责任编辑:gissky  发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
■■相 关 图 书:
■■相 关 文 章:
  • ArcGIS Engine下实现地图输出

  • ArcGIS Engine开发-TOCControl中实现图层的拖放

  • 用GeoTools读取Shapefile的属性数据

  • ArcGIS Engine开发中可以利用到的资源

  • ArcGIS Engine标准培训教程

  • leihu:ArcGIS Engine开发感想

  • 基于.net平台和ArcGIS Engine9.0开发通用地理信息系统平台

  • 上一篇文章:

  • 下一篇文章:
  •  
    GIS博客精华
    热点文章
    热门资源
     
    关于我们 | 联系我们 | 广告服务 | 友情链接 | 申请链接 | 合作联盟 | 诚聘英才
      GIS空间站(GISSky.Net)版权所有 站长:兔八哥