自定义ToolbarControl
2007-06-04 17:27
169 查看
自定义ToolbarControl
同在Form_Load事件中向ToolbarControl控件增加ArcGIS Engine命令和工具一样,你也可以使用定制对话框和自定义ToolbarControl的方式添加命令和工具。要实现它,就要将ToolbarControl置为定制模式并显示定制对话框。
1. 向类中增加下列成员变量:
……
private ITransformEvents_VisibleBoundsUpdatedEventHandler
visBoundsUpdatedE; // PageLayoutControl的焦点图事件
private ICustomizeDialog m_CustomizeDialog = new
CustomizeDialogClass(); // CurtomizeDialog被ToolbarControl使用
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. 增加下以下OnStartDialog和OnCloseDialog事件处理函数。这些函数将与自定义对话框打开或关闭时触发的事件紧密连接。
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上的任何一个项目,你可以调整它的显示样式和组合特性。
同在Form_Load事件中向ToolbarControl控件增加ArcGIS Engine命令和工具一样,你也可以使用定制对话框和自定义ToolbarControl的方式添加命令和工具。要实现它,就要将ToolbarControl置为定制模式并显示定制对话框。
1. 向类中增加下列成员变量:
……
private ITransformEvents_VisibleBoundsUpdatedEventHandler
visBoundsUpdatedE; // PageLayoutControl的焦点图事件
private ICustomizeDialog m_CustomizeDialog = new
CustomizeDialogClass(); // CurtomizeDialog被ToolbarControl使用
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. 增加下以下OnStartDialog和OnCloseDialog事件处理函数。这些函数将与自定义对话框打开或关闭时触发的事件紧密连接。
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上的任何一个项目,你可以调整它的显示样式和组合特性。
相关文章推荐
- 安卓V7后自定义Toolbar、ActionBar左侧有空白问题解决
- 学习使用Bing Maps Silverlight Control(四):添加自定义瓦片图层
- 学习使用Bing Maps Silverlight Control(六):自定义“鹰眼”地图
- 商城项目实战 | 2.1 Android 仿京东商城——自定义 Toolbar (一)
- ABAP--How to use Toolbar control(SAP样例摘抄)
- 拥有自己的ToolBar -- 好玩的自定义工具条哦
- Android 自定义Toolbar/ActionBar视图左边有空白
- jsf自定义toolbar组件
- SAP Control framework–CL_GUI_TOOLBAR
- AGS9.2中Toolbar的自定义ToolbarItem直接调用ADF的JS方法总结
- DevExpress自定义Spreadsheetcontrol 单元格右键菜单
- 创建一个自定义WebControl控件 WebImageButton的过程
- Toolbar的完全自定义
- Android 自定义Toolbar的Menu菜单
- 自定义下拉刷新控件-CBStoreHouseRefreshControl
- Toolbar的标题自定义颜色
- 最简单的自定义Toolbar SearchView样式方法
- ToolBar按钮颜色自定义
- 自定义toolbar时,左边始终会有间距
- 使用自定义的WebControl来构建简单的WebForm