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

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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值