(十一) 自定义ToolbarControl

同在Form_Load事件中向ToolbarControl控件增加ArcGIS Engine命令和工具一样,你也可以使用定制对话框和自定义ToolbarControl的方式添加命令和工具。要实现它,就要将ToolbarControl置为定制模式并显示定制对话框

1.       向类中增加下列成员变量:

……

     private ITransformEvents_VisibleBoundsUpdatedEventHandler

         visBoundsUpdatedE;          // PageLayoutControl的焦点图事件

 

     private ICustomizeDialog m_CustomizeDialog = new

         CustomizeDialogClass(); // CurtomizeDialogToolbarControl使用

     private ICustomizeDialogEvents_OnStartDialogEventHandler

         startDialogE; // CustomizeDialog启动事件

     private ICustomizeDialogEvents_OnCloseDialogEventHandler

         closeDialogE; // CustomizeDialog关闭事件

……

注:Visual Studio .NET提供了当程序集对COM interop开放时执行的函数在系统中被注册和取消注册的功能。这就允许你在定制对话框可能找到的组件目录中注册你自己的类。

2.       创建一个叫CreateCustomizeDialog的新函数,这个函数是你通过增加如下代码创建自定义对话框的地方。

     private void CreateCustomizeDialog()

     {

         // 设置自定义对话框事件

         startDialogE = new

             ICustomizeDialogEvents_OnStartDialogEventHandler(OnStartDialog);

         ((ICustomizeDialogEvents_Event)m_CustomizeDialog).OnStartDialog +=

             startDialogE;

         closeDialogE = new

             ICustomizeDialogEvents_OnCloseDialogEventHandler(OnCloseDialog);

         ((ICustomizeDialogEvents_Event)m_CustomizeDialog).OnCloseDialog +=

             closeDialogE;

 

         // 设置标题

         m_CustomizeDialog.DialogTitle = "自定义ToolbarControl项目";

         // 显示“从文件添加”按钮

         m_CustomizeDialog.ShowAddFromFile = true;

         // 设置将增加新项目的ToolbarControl

         m_CustomizeDialog.SetDoubleClickDestination(axToolbarControl1);

}

注:设置ComVisible属性为false确保此方法不能被COM客户端直接调用。当程序集通过COM注册时,它不影响被调用的方法。

3.       Form_Load事件中调用CreateOverviewSymbol子过程以前调用CreateCustomizeDialog函数。

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

     {

         // 当缩放时禁止重绘

         this.SetStyle(ControlStyles.EnableNotifyMessage, true);

 

         // ToolbarControl创建自定义对话框

CreateCustomizeDialog();

……

}

4.       在窗体上增加一个名叫“chkCustomize”的复选框,并将标题命名为“定制”。

5.       在设计模式显示窗体并从属性窗口选择chkCustomize控件,显示chkCustomize事件。在CheckedChanged事件上双击向代码窗口增加相应的事件处理。

6.       chkCustomize_CheckedChanged事件中增加下列代码。

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

     {

         // 显示或隐藏自定义对话框

         if (chkCustomize.Checked == false )

         {

             m_CustomizeDialog.CloseDialog();

             axToolbarControl1.Customize = false;

         }

         else

         {

             m_CustomizeDialog.StartDialog(axToolbarControl1.hWnd);

             axToolbarControl1.Customize = true;

         }

}

7.       增加下以下OnStartDialogOnCloseDialog事件处理函数。这些函数将与自定义对话框打开或关闭时触发的事件紧密连接。

     private void OnStartDialog()

     {

            axToolbarControl1.Customize = true;     

     }

 

     private void OnCloseDialog()

     {

         axToolbarControl1.Customize = false;

         chkCustomize.Checked = false;

}

8.       生成并运行应用程序,选择定制复选框使ToolbarControl进入自定义模式,并打开自定义对话框。

9.       在自定义ToolbarControl项目对话框中的左边目录(Categories)列表中选择“Graphic Element”项,然后在右边的命令(Commands)列表中“Select Elements”项上双击将其加入到ToolbarControl工具栏中。右键点击ToolbarControl上的任何一个项目,你可以调整它的显示样式和组合特性。

10.     结束定制应用。使用选择工具移动包含日期的文本元素。

 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值