zoukankan      html  css  js  c++  java
  • 关于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. 添加处理程序代码: 

    [csharp] view plaincopy
     
    1. namespace Composite_ControlsTest  
    2. {  
    3.     public partial class MyUserControl : UserControl  
    4.     {  
    5.         public MyUserControl()  
    6.         {  
    7.             InitializeComponent();  
    8.         }  
    9.   
    10.         private void BtnConfirm_Click(object sender, EventArgs e)  
    11.         {  
    12.             MessageBox.Show("Are you sure ?");  
    13.         }  
    14.   
    15.         private void BtnQuit_Click(object sender, EventArgs e)  
    16.         {  
    17.             MessageBox.Show("Are you quit ?");  
    18.         }  
    19.   
    20.         private void BtnCancel_Click(object sender, EventArgs e)  
    21.         {  
    22.             MessageBox.Show("Do you want to cancel this Operation ?");  
    23.         }  
    24.     }  
    25. }  

    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
  • 相关阅读:
    Android内存管理篇
    Android内存管理篇
    Java:ServiceLoader未加载服务提供实现类
    Java:SPI机制
    利用向量积(叉积)计算三角形的面积和多边形的面积
    VMware虚拟机安装WinXP出现错误output error file to the following location A:GHOSTERR.TXT
    @media与css先后顺序产生的优先级问题
    css 始终显示滚动条,内容超出显示有滑块的滚动条,内容没有超出显示空的滚动条
    css 内容溢出显示垂直滚动条,内容不超出就不显示滚动条
    css 一行或多行文字溢出以...的形式隐藏
  • 原文地址:https://www.cnblogs.com/shiguangshuo/p/5111207.html
Copyright © 2011-2022 走看看