C#視窗事件處理初探 (轉)
視窗事件處理初探
:namespace prefix = o ns = "urn:schemas--com::office" />
事件(Event Driven)是C#視窗設計的核心,其重要性就相當於VC中的訊息對映,不瞭解事件驅動就無法深入視窗程式設計的殿堂。在C#語言中,事件的處理主要有兩種方法:委託式的事件處理(Delegation Event Model)與對可過載方法(Event Method)的過載。
1、委託式事件處理
委託式事件處理模式,顧名思義,就是將特定的事件委託給負責事件處理的方法來進行。
在中,類有資料成員(Data Member)與成員(Function Member)。此外還有 “事件成員(Event Member)”,來進行事件驅動的處理。
事件成員就是那些與該類的相關的事件。它定義了在一個物件中會有哪些相關的事件發生。不同的類可以有不同的事件成員。
事件處理可透過委託關係來進行。委託關係可以這樣來建立:
.Event+=new EventHandle(Method);
其含義是:如果物件object發生了Event事件,就交由方法Method來處理。一個物件可以委託多個不同的處理,“+=”用來增加新的委託關係。Method是真正進行事件處理的地方,格式為:
public void Method(object sender,EventArgs e);
EventArgs是.NET 中有關事件的基礎類,所有發生的事件都被包裝成EventArgs類或其子類的物件。當事件發生時,Method會收到這兩個引數。一旦建立了委託關係,自動在特定事件發生時,轉而您所委託的事件處理方法。
下面舉一個簡單的例子,執行時首先產生一個視窗,當點選視窗上的按鈕時,程式結束。程式碼如下:
using System;
using System..Forms;
class Form1:Form
{
public static void
{
Application.Run(new Form1());
}
public Form1():base()
{
Text="事件處理示例";
Button button1=new Button();
button1.Text="點選";
//將button1的Click事件委託給countClick方法
button1.Click+=new EventHandler(this.countClick);
//將button1加到視窗中。
Controls.Add(button1);
}
public void countClick(object sender,EventArgs e)
{
Application.Exit();
}
}
2、過載事件方法
在C#中,針對不同類所相關的事件,除了定義有事件成員外,也定義了可過載的事件方法,可透過過載這些事件方法來設計你所希望的對應事件處理。這些可過載的事件方法名稱皆以“On”開頭,且被宣告為“virtual”,一個被宣告成virtual的方法,就代表它可被過載,被宣告成overr的方法也代表它可被過載,如果宣告成abstract則必須被過載。例如按鈕的Click事件,就有一個對應的可過載的OnClick事件方法。
仍然以上面的例子來說,程式碼如下:
using System;
using System.Windows.Forms;
class Button1:Button
{
public static void
{
Foform1=new Form();
form1.Text="事件處理示例";
Button1 button1=new Button1();
button1.Text="點選";
form1.Controls.Add(button1);
Application.Run(form1);
}
protected override void OnClick(EventArgs e)
{
Application.Exit();
}
}
透過以上的例子看出,在C#中進行事件處理是相當簡便的。來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-958385/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- android的視窗機制分析------事件處理Android事件
- 新視窗如何處理
- C#事件處理機制C#事件
- 視窗事件事件
- VCL中訊息處理初探 (轉)
- C#窗體--滑鼠事件C#事件
- 自定義Toast及視窗透明處理AST
- Flink處理函式實戰之四:視窗處理函式
- 處理滑鼠離開視窗的訊息 (WM_MOUSELEAVE) (轉)
- c++ builder裡四種處理“滑鼠離開窗體”事件的方法 (轉)C++UI事件
- C# winForm 視窗跳轉後關閉上一個視窗的方法C#ORM
- 0x02. 處理視窗關閉
- Flink的視窗處理機制(一)
- 控制檯程式的事件處理 (轉)事件
- 乾貨丨RPA視窗型處理方法
- 事件處理事件
- Go Qt5 建立空白視窗、視窗居中及關閉視窗事件GoQT事件
- [轉] Scala 中的非同步事件處理非同步事件
- C#的訊息處理方法 (轉)C#
- Tensorflow 視窗時間序列資料的處理
- C# API-動畫視窗C#API動畫
- Flutter | 事件處理Flutter事件
- JavaScript事件處理JavaScript事件
- React事件處理React事件
- vue事件處理Vue事件
- IE事件處理事件
- 事件相容處理事件
- JS事件處理JS事件
- C# 介面跳轉-登陸之後跳轉至主視窗C#
- 檢視EBS 資料庫等待事件及處理資料庫事件
- BREW常見問題解答(FAQ 5)-處理器和事件處理 (轉)事件
- javaScript事件(二)事件處理程式JavaScript事件
- python tkinter 視窗出現未響應處理方式Python
- C#中初始化視窗或歡迎視窗實現C#
- react之事件處理React事件
- wx處理滑鼠事件事件
- c#窗體form(winform)事件event呼叫事件的簡小示例C#ORM事件
- c#影象處理C#