none
這樣的事件程式碼該如何撰寫? RRS feed

  • 問題

  • 我在 Form 上有兩個 panel

    每個panel 大約有50個textbox

    當使用者在 panel_1 的任一個 textbox 按下enter 會自動去執行 sub1

    而當使用者在 panel_2 的任一個 textbox 按下enter 會自動去執行 sub2

    雖然事件宣告的 handles 後面可以接很多 textbox.keypress

    但是有50個textbox,一一加入很麻煩

    有沒有更快速的辦法來達到這個需求呢?

    請前輩指點一下

    謝謝

    2006年9月21日 上午 03:06

解答

  • 將form的KeyPreview設為true

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {

    if ((ActiveControl.GetType() == typeof(TextBox)) || (ActiveControl.GetType().IsSubclassOf(typeof(TextBox))) {

    if (((TextBox)ActiveControl).Parent == panel_1) {

    sub1();

    }

    else if (((TextBox)ActiveControl).Parent == panel_2) {

    sub2();

    }

    }

    }

    2006年9月21日 上午 03:15

所有回覆

  • 將form的KeyPreview設為true

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {

    if ((ActiveControl.GetType() == typeof(TextBox)) || (ActiveControl.GetType().IsSubclassOf(typeof(TextBox))) {

    if (((TextBox)ActiveControl).Parent == panel_1) {

    sub1();

    }

    else if (((TextBox)ActiveControl).Parent == panel_2) {

    sub2();

    }

    }

    }

    2006年9月21日 上午 03:15
  • 謝謝

    我試過了 可以正常執行

    再請問一下

    這個 function  的傳回值是 boolean

    傳回 true 和 false 有什麼差別?

     

    2006年9月21日 上午 09:08
  • 傳回值

    如果字元由控制項處理,為 true ;否則為 false

    2006年9月21日 上午 09:16
  • 不好意思 再問一下

    我發現呼叫 sub1 過程中,因為ProcessCmdKey尚未結束

    會把 keycode.return 傳遞到後面所有經由sub1間接引發的 keyup事件內

    有沒有辦法讓 keycode不要傳遞下去

    2006年9月21日 上午 09:42