在编程的过程中,当现有C#的控件满足不了我们的业务需求时,这就需要自己开发组件来达到我们的要求,即我们通常所说的自定义组件,在C#中,自定义组件分为三种:
1. 复合控件(Composite Controls):将现有的各种控件组合起来,形成一个新的控件,来满足用户的需求。
2. 扩展控件(Extended Controls):就是在现有的控件基础上,派生出一个新的控件,增加新的功能,或者修改原有功能,来满足用户需求。
3. 自定义控件(Custom Controls):就是直接从System.Windows.Forms.Control类派生,也就是说完全由自己来设计、实现一个全新的控件。
第一种方法比较简单,直接拼凑即可,但是功能上 比不上第二、三种;第二种是比较常见的方法,对现有控件的属性、方法等进行扩展,功能上基本能满足一般的需求。第三种实现的功能更强大,也更灵活,从Control类继承,控件的属性、方法、事件等全部由自己编码实现,这要求编写者拥有一定的C#编程经验和GDI/GDI+技能。下面就第一种和第二种方法进行简单的介绍,至于第三种由于涉及知识点过多就不在此讨论。
一 、 复合控件(Composite Controls):
复合控件实际上是控件的集合,类似于堆积木。因此,可以按照用户的需求,把VS 2010工具箱中的控件任意组合起来,形成一个复合控件。在以后使用中,将生成的这个复合控件作为一个控件来对待。复合控件一般都是从UserControl类派生而来,因此复合控件(用户控件)可以“UserControl测试容器”中进行测试。
复合控件创建的步骤:
1. 创建一个 Windows窗体控件库程序,并命名为MyUserControl:
2. 从工具箱拖放3个button 和1个label控件到设计界面上,具体布局如下:
3. 添加处理程序代码:
- namespace Composite_ControlsTest
- {
- public partial class MyUserControl : UserControl
- {
- public MyUserControl()
- {
- InitializeComponent();
- }
- private void BtnConfirm_Click(object sender, EventArgs e)
- {
- MessageBox.Show("Are you sure ?");
- }
- private void BtnQuit_Click(object sender, EventArgs e)
- {
- MessageBox.Show("Are you quit ?");
- }
- private void BtnCancel_Click(object sender, EventArgs e)
- {
- MessageBox.Show("Do you want to cancel this Operation ?");
- }
- }
- }
4. 生成复合控件。 按F5或者直接debug,观察结果,此时会弹出一个“用户控件测试容器”,在这个容器中,显示了我们的复合控件MyUserControl的运行情况,同时在其右侧,还有一个属性窗口,通过改变属性窗口中的属性设置,就可以改变复合控件的相应状态。
至此复合控件已经创建完毕了,生成的控件文件是个dll文件,在项目文件bin目录的debug文件下,以后可以直接把此复合控件直接当成个一般的控件使用,他拥有着自己的功能,为了演示创建我这只是简单的实现了他的功能,用户可以自行编写自己的事件处理代码来达到业务需求。接下来介绍如何在另外一个程序中加载刚刚创建的复合控件。
测试复合控件
1, 新建个windows窗体应用程序,命名为Test;
2. 添加自定义控件
点击“浏览”按钮,把刚刚生成的复合控件的dll文件添加进去,系统会默认把你刚才选中的控件打上勾,点击“确定”之后,可看到工具箱中多出了一个齿轮状的MyUserControl控件,这个就是刚刚创建的复合控件。
现在可以把此复合控件当成个普通的控件直接添加到设计窗体上了,并可以调整他们的属性,以下是测试结果。
以上就是C#自定义控件中的复合控件的创建和使用方法,由于扩展控件(Extended Controls)比这复杂点,所以打算单独写篇文章来介绍它的的创建及使用。
以上只是个人无聊之作,如有不足之处还望各位指正。
参考:http://www.cnblogs.com/myyouthlife/archive/2012/02/09/2343807.html。
- 顶
- 0
- 踩