C#自定义控件简介(一)

来源:互联网 发布:建立数学模型软件 编辑:程序博客网 时间:2024/05/29 19:44

   在编程的过程中,当现有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。

原创粉丝点击