欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#自定义事件及用法实例

程序员文章站 2022-07-01 17:16:33
本文实例讲述了c#自定义事件及用法。分享给大家供大家参考。具体分析如下: 事件是c#中一个重要的内容,msdn上有一个自定义事件的演示示例。我看了半天有点晕,所以新建了一...

本文实例讲述了c#自定义事件及用法。分享给大家供大家参考。具体分析如下:

事件是c#中一个重要的内容,msdn上有一个自定义事件的演示示例。我看了半天有点晕,所以新建了一个winform工程添加了一个按钮,然后找出调用的程序,一对比做了一个类似的示例,就明白了。看代码有时候比看文档来得更快。
所以还是一贯的原则,来干的,不来稀的。

using system;
namespace testeventargs
{
 /// <summary>
 /// 这个类对应于eventargs,做对比学习。
 /// 添加两个内容:info1,info2。
 /// </summary>
 public class myeventargs : eventargs
 {
  private string info1;
  private uint32 info2;
  public myeventargs(string info1, uint32 info2)
  {
   this.info1 = info1;
   this.info2 = info2;
  }
  public string info1
  {
   get { return this.info1; }
   set { this.info1 = value; }
  }
  public uint32 info2
  {
   get { return this.info2; }
   set { this.info2 = value; }
  }
 }
 /// <summary>
 /// 仿真button按钮
 /// </summary>
 public class mybutton
 {
  public delegate void myevnethandler(object sender, myeventargs e);
  /// <summary>
  /// 按钮点击的次数计数器
  /// </summary>
  public static uint32 clicked_num = 0;
  public event myevnethandler myclick;
  public void 触发()
  {
   myeventargs arg = new myeventargs(datetime.utcnow.tostring(), ++clicked_num);
   myclick(this, arg);
  }
 }
 /// <summary>
 /// 仿真form窗体
 /// </summary>
 public class myform
 {
  public mybutton 按钮;
  public myform()
  {
   按钮 = new mybutton();
   按钮.myclick += new mybutton.myevnethandler(this.button_clicked);
  }
  public void button_clicked(object sender, myeventargs e)
  {
   console.writeline("button clicked(sender is:" + sender.tostring() + "; info1 = "
    + e.info1 + "; info2 = " + e.info2);
  }
 }
 class program
 {
  static void main(string[] args)
  {
   myform 窗体 = new myform();
   for (int i = 0; i < 10; i++ )
   {
    窗体.按钮.触发();
    system.threading.thread.sleep(500);
   }
   console.writeline("press any key to continue...");
   console.readkey();
  }
 }
}

希望本文所述对大家的c#程序设计有所帮助。