C# 程式模擬元件的事件 |
答題得分者是:code6421
|
C200113
一般會員 發表:5 回覆:3 積分:1 註冊:2003-11-10 發送簡訊給我 |
|
code6421
版主 發表:43 回覆:223 積分:208 註冊:2002-08-16 發送簡訊給我 |
引言: 環境是VS C# Windows Form 請問: 1.在程式中,如何得知委派給[某元件的某一事件]的函式為何?除了Instance自身外,無從得知,因為封裝式設計的關係. 引言: 2.假設有一Button元件,若Click事件未委派或是在不清楚委派的事件函式為何的情況下,如何以程式模擬元件的事件(類似Delphi的Button.Click事件,事先不需知道Click事件到底呼叫哪個函式)??架構上不允許這樣做,理由同上. 正規引發事件的方式應該是模擬其行為,例如以模擬訊息來引發UI事件. 當然,要說捷徑也不是沒有....... using System.Reflection; ........ private void HackCallEvent(object instance, string eventName,EventArgs args) { MethodInfo mi = instance.GetType().GetMethod("On" eventName,BindingFlags.NonPublic|BindingFlags.Instance); if(mi != null) mi.Invoke(instance,new object[]{EventArgs.Empty}); } sample. HackCallEvent(button3,"Click",EventArgs.Empty);這段程式碼是利由.NET Framework 1.0/1.1 的特定行為 及Control 的設計慣例來操作. Just coding... Taiwan:http://code6421.ktop.com.tw China:http://home.hoolee.com/~code6421 發表人 - code6421 於 2004/10/15 20:53:57 發表人 - code6421 於 2004/10/15 20:55:16 發表人 - code6421 於 2004/10/15 21:00:27
------
Just codeing... |
C200113
一般會員 發表:5 回覆:3 積分:1 註冊:2003-11-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |