C#复合控件开发技术

开发 后端
这里介绍C#复合控件开发技术,.NET平台为我们提供了三种控件的开发技术,分别是:继承控件(Extended Control)、复合控件(Composite Control)和自定义控件(Custom Control)。

Visual C# .NET有很多值得学习的地方,今天重点介绍创建控件工程、更改命名空间、控件类名称、添加现有控件、公布控件属性。

本文介绍如何用Visual C# .NET 2002开发简单的C#复合控件(Composite Control),主要讲解控件开发过程中的属性(Property)和事件(Event)处理,以方便开发人员在.NET平台下根据自己的需要开发适合的控件。

当我们在.NET平台下做Windows Forms开发时,常常需要为了某一特殊用途而把现有控件结合起来使用,比如结合了Label和TextBox的控件就非常容易在窗体上布局(记得 Delphi 6里就有这么个控件),而结合了特定图案和文字的控件则非常适合显示公司的logo。.NET平台就为我们提供了非常棒的工具和技术来创建这样的自定义控件。下面让我们来一起创作一个可以自动显示时间的控件。

值得注意的是,.NET平台为我们提供了三种控件的开发技术,分别是:继承控件(Extended Control)、复合控件(Composite Control)和自定义控件(Custom Control)(译名可能会有所不同,大家可以以英文为准)。我们现在关心的是第二种——C#复合控件开发技术。OK,Let’s go!

1.创建控件工程。

在Visual C# .NET中新建一个“Windows控件库”项目,命名为“TimeLabel”

2.更改命名空间、控件类名称。

默认的命名空间是TimeLabel(和项目名称一样),控件类名称是UserControl1。请把命名空间改为与你的开发习惯一致,如我的是LeoYang.Controls.TimeLabel,当然你也可以选择保留默认命名空间;***把控件类名称改为有意义的命名,如 TimeLabel,这样当该控件出现在工具箱上时,就会显示为TimeLabel而不是UserControl1了。注意,一旦改动类名,则相应的 Construction方法名称也要相应改掉,如:

  1. public UserControl1(){  
  2. …  
  3. }  
  4. //就要改为:  
  5. public TimeLabel(){  
  6. …  
  7. }  


3.添加现有控件。

由于我们是要在现有控件的基础上创建新控件,所以就应该先把可用的现有控件添加到控件设计界面上。请在“工具箱”中双击Label,再双击Timer,两个现有控件依次被添加到我们的设计界面上

4.公布控件属性

因为要把时间写入Label的Text属性中,所以我们需要把label1.Text属性公开。请在TimeLabel类中加入以下代码:

  1. public string LabelText  
  2. {  
  3. get  
  4. {  
  5. return label1.Text;  
  6. }  

注意,这里我们不需要让控件使用者改变label1.Text的值,所以LabelText是个只读属性。

另外,出于美观的考虑,我们这里还要向控件使用者公开一个LabelBackColor属性,用于获得和设置Label的BackColor属性。代码如下:

  1. public Color LabelBackColor{  
  2. get{  
  3. return label1.BackColor;  
  4. }  
  5. set{  
  6. label1.BackColor=value;  
  7. }  

当然,你也可以根据需要再增加一些属性,如字体、控件大小等,让控件使用者可以更加灵活地使用控件。

到这里,我需要向大家补充一点,C#复合控件创建中的很重要的一条是:任何构成控件(Constituent Control)的属性必须要通过加入复合控件的属性来公开,而不要直接把构成控件直接以public级别公开。比如说上面,我们就不应把Label控件的访问级别设为public来直接公开(默认是private)。这样作的目的是让我们能更好地把握控件的数据安全,从而只把那些最需要的属性公开给控件用户。以上介绍C#复合控件开发技术。

【编辑推荐】

  1. C#编写数字转换中文算法
  2. 分析C#调用COM对象
  3. C# SingleInstance类浅析
  4. 概述C#调用Active组件
  5. C# Convert.ToInt32简介
责任编辑:佚名 来源: 博客园
相关推荐

2009-08-19 15:30:40

C#复合控件构建

2009-08-21 17:55:52

C#复合控件

2009-08-19 14:15:42

C# 复合控件

2009-09-16 10:56:22

C#开发ActiveX

2009-09-11 10:41:20

C# WinForm控

2009-08-06 18:18:27

ASP.NET控件开发ASP.NET复合控件

2011-05-20 16:07:29

C#

2009-09-01 17:08:14

C#画线控件

2009-07-30 16:52:38

复合控件ASP.NET服务器控

2009-08-19 11:21:02

C# ListBox控

2009-08-24 11:23:41

C# TimeLabe

2009-08-11 14:45:41

C# DataGrid

2009-08-18 17:41:22

C# ListView

2015-05-12 14:16:15

C#ActiveX控件web调用

2009-08-06 16:58:40

C#编写ActiveX

2009-08-21 15:27:11

C# DataGrid

2009-09-04 17:58:38

C# Web Brow

2009-08-28 15:05:35

C#编写Calenda

2009-08-12 10:35:50

C#调用ActiveX

2009-08-14 14:19:50

Enhanced LiC#构建
点赞
收藏

51CTO技术栈公众号