一个简单的有关 C# event 的例子!

public RequestList()
  {
   //
   // TODO: コンストラクタ ロジックをここに追加してください。
   //
   contextMenu = new IGContextMenu();
   contextMenu.Style = MenuStyle.Office2003;

   EventHandler onClick = new EventHandler(this.MenuMarkAsRead_Click);
   contextMenu.MenuItems.Add(new IGMenuItem(UIResources.GetResourceText(MarkAsRead, RequestListMenuResourceContext), onClick));
   onClick = new EventHandler(this.MenuMarkAsUnread_Click);
   contextMenu.MenuItems.Add(new IGMenuItem(UIResources.GetResourceText(MarkAsUnread, RequestListMenuResourceContext), onClick));
   onClick = new EventHandler(this.MenuMarkAsWorking_Click);
   contextMenu.MenuItems.Add(new IGMenuItem(UIResources.GetResourceText(MarkAsWorking, RequestListMenuResourceContext), onClick));
   onClick = new EventHandler(this.MenuMarkAsUnworking_Click);
   contextMenu.MenuItems.Add(new IGMenuItem(UIResources.GetResourceText(MarkAsUnworking, RequestListMenuResourceContext), onClick));
   onClick = new EventHandler(this.MenuDeleteDraft_Click);
   contextMenu.MenuItems.Add(new IGMenuItem(UIResources.GetResourceText(DeleteDraft, RequestListMenuResourceContext), onClick));

   this.contextMenu.Popup += new System.EventHandler(this.ContextMenu_Popup);
   this.ContextMenu = contextMenu;
   selectedRequest = null;
  }

对于一个刚刚接触 .net、c# 或者 oop 的人来说, events 和 delegates 的概念是比较复杂而难于理解的。而下面的这个例子我认为也许是说明 c#  Event Handling 最简单的例子之一(此话有点绝对)。

一个 Metronome(节拍器) class 创建 events,每3秒钟作一个 tick,然后有一个 Listener(收听者) class 来接收(或者说是收听)这个 Metronome(节拍器)发出的 ticks,每接收到一个 tick 就以 Console 的形式打印出 "HEARD IT"。

这是一个非常好的想法,能够使所谓的 新手(novice programmer),迅速理解 events 的概念及使用。

下面这篇代码已经通过测试,可以直接粘贴到一个空的 c# project 中 ……



public RequestList()
  {
   //
   // TODO: コンストラクタ ロジックをここに追加してください。
   //
   contextMenu = new IGContextMenu();
   contextMenu.Style = MenuStyle.Office2003;

   EventHandler onClick = new EventHandler(this.MenuMarkAsRead_Click);
   contextMenu.MenuItems.Add(new IGMenuItem(UIResources.GetResourceText(MarkAsRead, RequestListMenuResourceContext), onClick));
   onClick = new EventHandler(this.MenuMarkAsUnread_Click);
   contextMenu.MenuItems.Add(new IGMenuItem(UIResources.GetResourceText(MarkAsUnread, RequestListMenuResourceContext), onClick));
   onClick = new EventHandler(this.MenuMarkAsWorking_Click);
   contextMenu.MenuItems.Add(new IGMenuItem(UIResources.GetResourceText(MarkAsWorking, RequestListMenuResourceContext), onClick));
   onClick = new EventHandler(this.MenuMarkAsUnworking_Click);
   contextMenu.MenuItems.Add(new IGMenuItem(UIResources.GetResourceText(MarkAsUnworking, RequestListMenuResourceContext), onClick));
   onClick = new EventHandler(this.MenuDeleteDraft_Click);
   contextMenu.MenuItems.Add(new IGMenuItem(UIResources.GetResourceText(DeleteDraft, RequestListMenuResourceContext), onClick));

   this.contextMenu.Popup += new System.EventHandler(this.ContextMenu_Popup);
   this.ContextMenu = contextMenu;
   selectedRequest = null;
  }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值