2010-04-03 80 views
6

我想在一個文本框添加「按鍵響應」事件(WinForm的)WinForms文本框的「KeyPress」事件丟失?

this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(CheckKeys); 

和這裏的「CheckKeys」裏面:

private void CheckKeys(object sender, System.Windows.Forms.KeyPressEventArgs e) 
{ 
    if (e.KeyChar == (char)13) 
    { 
     // Enter is pressed - do something 

    } 
} 

這裏的想法是,一旦一個文本框是焦點和'Enter'按鈕被按下時,會發生什麼...

但是,我的機器找不到'KeyPress'事件。 我的代碼有什麼問題嗎?

UPDATE:

我也試圖把的KeyDown代替按鍵:

private void textBox1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) 
{ 

    if (e.Key == Key.Return) 

     // Enter is pressed - do something 
    } 
} 

還沒雖然工作...

+1

您是否嘗試過尋找的KeyDown? – Chris 2010-04-03 13:14:59

+1

這應該工作 - 你確定你在正確的地方訂閱你的CheckKeys處理程序嗎?如果你在你的處理程序中放入了 MessageBox.Show(e.KeyChar.ToString())會發生什麼 - 它是否捕獲任何事件? – pduncan 2010-04-03 13:20:09

+0

@Chris:不工作。我試圖創建一個類似於點擊按鈕的事件。 – abramlimpin 2010-04-03 13:23:19

回答

9

您正在混合類庫,不要在WPF項目中使用Windows窗體類。使它看起來像這樣:

public partial class Window1 : Window { 
    public Window1() { 
     InitializeComponent(); 
     this.textBox1.KeyDown += new KeyEventHandler(textBox1_KeyDown); 
    } 

    private void textBox1_KeyDown(object sender, KeyEventArgs e) { 
     if (e.Key == Key.Enter) { 
     MessageBox.Show("Enter!"); 
     e.Handled = true; 
     } 
    } 
    } 
6

你是否看了documentationKeyPress?它明確指出KeyPress事件不是由非字符鍵引發的;但是,非字符鍵會引起KeyDown和KeyUp事件。使用其中的一個事件應該可以工作。

+0

@Anders:嘗試使用KeyDown代替。我試圖通過按Enter鍵來調用Storyboard(來自WPF),但沒有發生任何事情。 – abramlimpin 2010-04-03 13:37:29

-4

請嘗試以下步驟它將工作,bcoz我測試了它。

  1. 選擇文本框,右鍵單擊它,然後單擊屬性。
  2. 點擊事件,然後雙擊就按鍵響應
  3. 單擊然後鍵入以下代碼。

    private void textBox2_KeyPress(object sender, KeyPressEventArgs e) 
    { 
        if (e.KeyChar == (char)13) 
        {    
         //press Enter do Something Like i have messagebox below to show "wow" 
         MessageBox.Show("wow"); 
        } 
        else 
        { 
        } 
    } 
    
+4

它的作品*因爲你測試它? – 2011-08-29 07:31:23