科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件用Visual C#开发简单的复合控件

用Visual C#开发简单的复合控件

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:小刀人编译 来源:it实验室 2007年11月11日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
5.时间显示的处理。

  到现在,我们就可以增加代码来让我们的控件显示时间了。首先请把timer1的Interval属性设为1000,也就是1秒的时隔。然后双击timer1,在其Tick事件处理过程中增加以下代码:

label1.Text=System.DateTime.Now.ToLongTimeString();

  这样,每隔一秒钟,我们的Label就会重新显示当前系统时间。最后,请双击TimeLabel控件上的空白处,在出现的TimeLabel_Load事件处理过程中增加以下代码来激活Timer:

timer1.Enabled=true;

  这样,Timer就会忠心耿耿地开始计算时间,并更新Label上的时间文字了。

  6.事件处理。

  由于是继承自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 timer1_Tick(object sender, System.EventArgs e)
{
 label1.Text=System.DateTime.Now.ToLongTimeString();
 OnTick(e);
}

  7.创建试验项目。

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

用Visual C# .NET开发简单的复合控件(图二)

  8.添加控件引用。

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


用Visual C# .NET开发简单的复合控件(图三)

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


用Visual C# .NET开发简单的复合控件(图四)

  9.使用控件。

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

  10.响应事件。

  前面我们给TimeLabel增加了一个Tick事件,每当时间显示改变之后发生。那么我们的程序怎样知道Tick事件已经发生、并对它做出反应呢?方法如下:

  首先增加事件处理过程如下(名称可以自定,但必须要有object和EventArgs类型的参数,并且以void类型返回):

private void TickHandler(object sender, EventArgs e)
{
 System.Diagnostics.Debug.WriteLine(timeLabel1.LabelText);
}

  其次,在Form.InitializeComponent过程中把上述过程注册给TimeLabel的Tick事件:

this.timeLabel1.Tick+=new EventHandler(this.TickHandler);

  这样,我们的试验项目就已经完成,可以调试了。试验程序启动界面如图6:

用Visual C# .NET开发简单的复合控件(图五)

  同时,在调试器的输出窗口中,每隔一秒都会有一条新的Debug记录写入,内容是TimeLabel的LabelText属性(即所显示的时间)。这说明我们的事件处理成功了:)

  后记:本文通过一个简单的demo演示了如何使用Visual C# .NET创建一个简单的复合控件。大家可以按照项目或学习的实际需要来把这个例子进一步完善(比如说可以给控件增加自定义的图标等)。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章