2010-04-03 54 views
6

Tôi cố gắng để thêm một "KeyPress" sự kiện trong một textbox (WinForm)Sự kiện "KeyPress" cho hộp văn bản WinForms bị thiếu?

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

và đây là bên trong 'CheckKeys':

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

    } 
} 

Ý tưởng ở đây là một khi một textbox là trong tiêu điểm và nút 'Enter' được nhấn, điều gì đó sẽ xảy ra ...

Tuy nhiên, máy của tôi không thể tìm thấy sự kiện 'KeyPress'. Có vấn đề gì với mã của tôi không?

UPDATE:

Tôi cũng đã cố gắng đưa KeyDown thay vì KeyPress:

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

    if (e.Key == Key.Return) 

     // Enter is pressed - do something 
    } 
} 

Vẫn không làm việc mặc dù ...

+1

Bạn đã thử tìm KeyDown chưa? – Chris

+1

Thao tác này sẽ hoạt động - bạn có chắc chắn đang đăng ký trình xử lý CheckKeys của mình ở đúng vị trí không? Điều gì xảy ra nếu bạn đặt MessageBox.Show (e.KeyChar.ToString()) trong trình xử lý của bạn - nó có bắt bất kỳ sự kiện nào không? – pduncan

+0

@Chris: không hoạt động. Tôi đã cố tạo một sự kiện tương tự như việc nhấp vào một nút bằng cách nhấn enter. – abramlimpin

Trả lời

9

Bạn đang trộn các thư viện lớp, không sử dụng các lớp Windows Forms trong dự án WPF. Làm cho nó trông như thế này:

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

Bạn đã nhìn documentation trên KeyPress? Nó tuyên bố cụ thể rằng Sự kiện KeyPress không được nâng lên bởi các phím noncharacter; tuy nhiên, các phím noncharacter làm tăng các sự kiện KeyDown và KeyUp. Thay vào đó, sử dụng một trong những sự kiện đó sẽ hoạt động.

+0

@Anders: đã thử sử dụng KeyDown thay thế. Tôi đã cố gắng gọi một Storyboard (từ WPF) bằng cách nhấn enter, nhưng không có gì xảy ra. – abramlimpin

-4

thử các bước sau nó sẽ hoạt động, bcoz tôi đã thử nghiệm nó.

  1. chọn hộp văn bản, nhấp chuột phải vào đó, sau đó nhấp vào thuộc tính.
  2. nhấp vào sự kiện, sau đó nhấp đúp vào KeyPress
  3. rồi nhập mã sau đây.

    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

Nó hoạt động * bởi vì * bạn đã thử nghiệm nó? –

Các vấn đề liên quan