科技行者

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

知识库

知识库 安全导航

至顶网软件频道用Visual C# .NET开发简单的复合控件 2

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

  • 扫一扫
    分享文章到微信

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

     4.公布控件属性

作者:中国IT实验室 来源:中国IT实验室 2007年9月10日

关键字: C# 编程

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

  4.公布控件属性。

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

public string LabelText

{

get

{

return label1.Text;

}

}

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

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

public Color LabelBackColor

{

get

{

return label1.BackColor;

}

set

{

label1.BackColor=value;

}

}

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

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

  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);

}

 

查看本文来源

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

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

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