知识大全 用Visual C# .NET开发简单的复合控件

Posted 属性

篇首语:贵有恒,何必三更起、五更眠、最无益,只怕一日曝、十日寒。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用Visual C# .NET开发简单的复合控件相关的知识,希望对你有一定的参考价值。

用Visual C# .NET开发简单的复合控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  内容提要

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

  当我们在 NET平台下做Windows Forms开发时 常常需要为了某一特殊用途而把现有控件结合起来使用 比如结合了Label和TextBox的控件就非常容易在窗体上布局(记得Delphi 里就有这么个控件) 而结合了特定图案和文字的控件则非常适合显示公司的logo NET平台就为我们提供了非常棒的工具和技术来创建这样的自定义控件 下面让我们来一起创作一个可以自动显示时间的控件 值得注意的是 NET平台为我们提供了三种控件的开发技术 分别是 继承控件(Extended Control) 复合控件(Composite Control)和自定义控件(Custom Control)(译名可能会有所不同 大家可以以英文为准) 我们现在关心的是第二种——复合控件 OK Let s go! .创建控件工程

  在Visual C# NET中新建一个 Windows控件库 项目 命名为 TimeLabel .更改命名空间 控件类名称

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

   .添加现有控件

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

>

   

   .公布控件属性

  因为要把时间写入Label的Text属性中 所以我们需要把label Text属性公开 请在TimeLabel类中加入以下代码 public string LabelText get return label Text; 注意 这里我们不需要让控件使用者改变label Text的值 所以LabelText是个只读属性 另外 出于美观的考虑 我们这里还要向控件使用者公开一个LabelBackColor属性 用于获得和设置Label的BackColor属性 代码如下 public Color LabelBackColor get return label BackColor; set label BackColor=value; 当然 你也可以根据需要再增加一些属性 如字体 控件大小等 让控件使用者可以更加灵活地使用控件 到这里 我需要向大家补充一点 复合控件创建中的很重要的一条是 任何构成控件(Constituent Control)的属性必须要通过加入复合控件的属性来公开 而不要直接把构成控件直接以public级别公开 比如说上面 我们就不应把Label控件的访问级别设为public来直接公开(默认是private) 这样作的目的是让我们能更好地把握控件的数据安全 从而只把那些最需要的属性公开给控件用户

   .时间显示的处理

  到现在 我们就可以增加代码来让我们的控件显示时间了 首先请把timer 的Interval属性设为 也就是 秒的时隔 然后双击timer 在其Tick事件处理过程中增加以下代码 label Text=System DateTime Now ToLongTimeString();

  这样 每隔一秒钟 我们的Label就会重新显示当前系统时间 最后 请双击TimeLabel控件上的空白处 在出现的TimeLabel_Load事件处理过程中增加以下代码来激活Timer timer Enabled=true; 这样 Timer就会忠心耿耿地开始计算时间 并更新Label上的时间文字了 .事件处理

  由于是继承自UserControl的控件 所以TimeLabel从一开始便拥有了Click DragDrop FontChanged等事件 我们现在要做的是增加一个自定义事件——Tick 以便通知使用我们控件的窗体时间已经改变了 因为我们只需要简简单单地让这个事件发生 所以不需创建我们自己的代理(delegate)函数 也不需创建特殊的事件处理事据对象 OK 请看下面的代码 首先在TimeLabel类里增加Tick事件声明 public event EventHandler Tick; 然后给该事件编写一个调用过程 请注意该过程的命名 protected void OnTick (EventArgs e) if(Tick!=null) Tick(this e); 另外 在上面处理过的Timer的Tick事件处理过程中 还应增加对OnTick的调用 代码如下 private void timer _Tick(object sender System EventArgs e) label Text=System DateTime Now ToLongTimeString(); OnTick(e);

   

   .创建试验项目

  在Visual C# NET中通过 文件 - 添加项目 - 新建项目 创建一个新的Windows应用程序 命名为TestTimeLabel 并添入当前解决方案中 如图

>

   .添加控件引用

  在使用自定义控件之前 我们必须把控件添加到 工具箱 中 方法是 右击 工具箱 点选 自定义工具箱 在弹出的 自定义工具箱 对话框中选择 NET框架组件 页 然后点击 浏览 定位并打开我们刚才所创建的TimeLabel控件专有程序集(TimeLabel dll) 使该控件出现在 NET框架组件 列表中 如图 所示

>

  点击 确定 即可把TimeLabel控件添加到 工具箱 中 如图 所示

>

   .使用控件

  现在 我们就可以把我们创建的TimeLabel像其它控件一样拖放到Windows窗体上 设置它的属性和响应它的事件了 比如 可以在属性窗口中设置TimeLabel的LabelBackColor为你喜欢的颜色 当然 除LabelBackColor以外 还有大量的属性可供设置 而且如果大家愿意 还可以回到TimeLabel项目中再用上面说过的方法增加其它的属性 从而使控件功能和用户界面更加丰富

   .响应事件

  前面我们给TimeLabel增加了一个Tick事件 每当时间显示改变之后发生 那么我们的程序怎样知道Tick事件已经发生 并对它做出反应呢?方法如下 首先增加事件处理过程如下(名称可以自定 但必须要有object和EventArgs类型的参数 并且以void类型返回) private void TickHandler(object sender EventArgs e) System Diagnostics Debug WriteLine(timeLabel LabelText); 其次 在Form InitializeComponent过程中把上述过程注册给TimeLabel的Tick事件 this timeLabel Tick+=new EventHandler(this TickHandler); 这样 我们的试验项目就已经完成 可以调试了 试验程序启动界面如图

> cha138/Article/program/net/201311/13228

相关参考

知识大全 一步一步创建Visual Basic .NET 控件

一步一步创建VisualBasic.NET控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!我从来

知识大全 使用Visual C# .NET 创建线程

使用VisualC#.NET创建线程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!使用线程创建Vi

知识大全 怎样在Visual C# .NET 中跟踪和调试(1)

怎样在VisualC#.NET中跟踪和调试(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 浅析Visual C# 2005的开发技巧

浅析VisualC#2005的开发技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Visua

知识大全 利用Visual C#实现Reversi游戏开发

利用VisualC#实现Reversi游戏开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一

知识大全 利用Visual C# 2005制作简单动画效果

利用VisualC#2005制作简单动画效果  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一般的W

知识大全 C#开发ActiveX控件操作指南

C#开发ActiveX控件操作指南  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#开发Act

知识大全 用C#对ADO.NET数据库完成简单操作

用C#对ADO.NET数据库完成简单操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!数据库访问是

知识大全 自定义分页控件源码asp.net(c#)

  可能大家有用得着的地方发出来一起研究下代码如下  Pagercs 服务器控件源代码  usingSystem;   usingSystemWeb; 

知识大全 图解 Visual Studio .Net 团队开发

图解VisualStudio.Net团队开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要