2014-11-20 41 views
-1

,從我對如何創建鍵盤Click here for the link無法取得KeyPressEventHandler在用戶控件

的用戶控件看到了現場。我成功地將控件添加到工具中。並在Form UI中拖動一個。當我開始點擊數字。 RaiseButton被觸發:

private void btn1_click(object sender,eventargs e) 
    { 
     RaiseButton('1'); 
    } 

和另一個用戶控件。 有此方法

public event KeyPressHandler IsPressed; 

public void RaiseButton(char Tosend) 
{ 
    KeyPressEventHandler handle = IsPressed; 
    handle(this,new KeypressEventArgs(Tosend)); 
} 

的Class KeyPressHandler Ispressed值爲空 因此它不能寫入到文本框。現在我的問題是,我錯過了什麼使keypresseventhandler爲空?

請指教謝謝

回答

0

我現在解決了。我在表單中使用的事件與我在用戶控件中使用的事件不同,我非常愚蠢。用戶控件中的public event KeyPressEventHandler IsPressed事件也必須在您的表單中使用。爲了能夠註冊這個,在你想要使用該控件的表單上。單擊用戶控件並查看事件屬性,或者只需單擊屬性中的雷霆符號即可。尋找事件IsPressed現在你的好去。雙擊並放置您想要爲該事件執行的代碼。 @wlemond謝謝你給我的例子。

乾杯:)

0

因爲沒有被註冊爲它的IsPressed事件爲null。一旦註冊該事件,它將不再爲空。首先檢查事件爲空。另外,您不需要將其分配給變量。

public void RaiseButton(char Tosend) 
{ 
    if (IsPressed != null) 
    { 
     IsPressed(this,txtbox.text); 
    } 
} 
+0

嗨,感謝您的快速回復,但是您什麼意思沒有註冊?在這一行公共事件KeypressEventHandler IsPressed - 已經爲null的值。我如何註冊這個活動? – Androidz 2014-11-21 02:26:03

+0

和對不起,我編輯這裏的句柄(this,txtbox.text)到 句柄(這個,新的KeyPresseventargs(tosend));這是在Windows控件庫中。 – Androidz 2014-11-21 02:27:46

+0

看來你並不完全瞭解C#中的事件是如何工作的。我在這裏爲你創建了一個簡單的例子。 https://dotnetfiddle.net/3PfsRJ 它可能會幫助您瞭解您需要在代碼中執行的操作。另外,你可能想看到這個頁面。 http://msdn.microsoft.com/en-us/library/aa645739%28v=vs.71%29.aspx 我猜你的名字是你用Java編碼。 C#事件與Java如何做有點不同。 – wlemond 2014-11-22 15:58:50