如何将第三方控件嵌入ToolStrip控件,并提供Design-Time支持
来源:互联网 发布:mysql 触发器 set用法 编辑:程序博客网 时间:2024/04/29 06:59
最近研究了一下如何将第三方控件嵌入到ToolStrip控件中,并能提供Design-Time下的支持.
下面将详细讲解如何把系统的MonthCalendar控件嵌入到ToolStrip控件中.
以下的两幅图片显示了最终的样子.
Run-Time下的样子
Design-Time下的样子
如何将第三方控件嵌入到ToolStrip
微软实现了一个ToolStripControlHost类, 它是ToolStripComboBox, ToolStripTextBox, 和 ToolStripProgressBar等的基类. ToolStripControlHost提供了将第三方控件嵌入ToolStrip的能力. 我们可以用两种方式使用它:
一, 我们可以直接将继承自Control类的第三方控件作为ToolStripControlHost的构造函数的参数构造一个ToolStripControlHost实例, 将这个实例直接作为ToolStrip的Item加到ToolStrip的Items集合中使用即可.
二, 从ToolStripControlHost派生, 在继承类默认参构造函数中将第三方控件作为参数调用基类的有参构造函数. 这种方式可以很容易的在继承类中暴露属性,方法和事件,便于访问.
实现步骤如下:
1, 扩展 ToolStripControlHost。实现一个调用传入所需控件的基类构造函数的默认构造函数。
2, 声明一个与包装控件相同类型的属性,并在属性访问器中返回 Control 作为正确类型的控件。
3, 使用扩展类中的属性和方法公开包装控件的其他常用属性和方法。
4, 也可以选择重写 OnSubscribeControlEvents 和 OnUnsubscribeControlEvents 方法,并添加要公开的控件事件。
5, 为要公开的事件提供必要的包装。
完整的示例请参见MSDN(http://msdn2.microsoft.com/en-us/library/9k5etstz.aspx ).
如何提供设计时的支持
1, 为从ToolStripControlHost继承的类添加ToolStripItemDesignerAvailabilityAttribute标签.
它可以使ToolStrip在Design-Time下能够找到从ToolStripControlHost继承的第三方控件, 直接效果就是第三方控件在下拉菜单中可以直接列举出来. 另外,除了可以将第三方控件嵌入ToolStrip外, 我们还可以直接将第三方控件嵌入到ContextMenuStrip, MenuStrip和StatusStrip中.
ToolStripItemDesignerAvailability枚举成员如下:
成员名称
说明
All
指定所有控件均可见。ContextMenuStrip
指定 ContextMenuStrip 是可见的。MenuStrip
指定 MenuStrip 是可见的。
None
指定无任何控件可见。StatusStrip
指定 StatusStrip 是可见的。ToolStrip
指定 ToolStrip 是可见的。
2, 为继承的控件添加ToolboxBitmapAttribute标签改变默认Icon.
The End
- 如何将第三方控件嵌入ToolStrip控件,并提供Design-Time支持
- 如何将第三方控件嵌入ToolStrip控件,并提供Design-Time支持
- 如何将第三方控件嵌入ToolStrip控件,并提供Design-Time支持
- 如何将Activity打成jar包供第三方调用
- ActiveReports 报表应用教程 (13)---嵌入第三方控件
- ActiveReports 报表应用教程 (13)---嵌入第三方控件
- 如何使用FreeTextBox3.1.6第三方控件
- delphi中的第三方控件如何安装
- delphi中的第三方控件如何安装
- 如何将第三方控件UltraWinGrid设为只读或选中整行
- C#中的toolStrip控件
- 工具栏控件ToolStrip
- 第三方控件使用方法
- 第三方控件使用方法
- 安装第三方控件
- 什么是第三方控件
- WPF - 第三方控件
- silverlight第三方控件
- 如何让你的EditText只接受数字输入
- 研发部门压力管理探讨 (转)
- 声明一个函数指针
- php动态生成xml格式的rss文件
- 几年从业,几点感悟,几点忠告。
- 如何将第三方控件嵌入ToolStrip控件,并提供Design-Time支持
- .net动态生成RSS文件的方法
- Apache Drupal URL重写
- FSDK_DetectMultipleFaces
- Android 之 SharedPreferences
- 如何在VS2008中将HTML控件转换为服务器控件
- MAP
- 团队开发之环境搭建(转)--SVN源代码管理
- RegQueryValueEx函数返回234错误解决方法