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