2013-04-28 47 views
5

Tôi có một hộp văn bản và bên dưới nó tôi có một hộp danh sách.C# - Cách ghi đè hành động cho "Mũi tên lên" và "Mũi tên xuống" cho hộp văn bản?

Trong khi người dùng đang nhập vào hộp văn bản nếu anh ta nhấn mũi tên lên hoặc xuống, anh ta nên thực hiện lựa chọn trong hộp danh sách. Hộp văn bản phát hiện tất cả các ký tự (ngoại trừ dấu cách) nhưng có vẻ như nó không thể phát hiện các mũi tên nhấn.

Bất kỳ giải pháp nào cho điều này? Đây là một dự án WPF btw.

EDIT, Dưới đây là đoạn code làm việc nhờ T.Kiley:

private void searchBox_PreviewKeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.IsDown && e.Key == Key.Down) 
     { 
      e.Handled = true; 
      //do your action here 

     } 
     if (e.IsDown && e.Key == Key.Up) 
     { 
      e.Handled = true; 
      //do another action here 
     } 
    } 

Trả lời

3

Tôi vừa thử tính năng này và hoạt động. Thêm sự kiện từ khóa xem trước xuống hộp văn bản

private void TextBox_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e) 
    { 
     if (e.IsDown && e.Key == Key.Down) 
      MessageBox.Show("It works"); 
    } 
+0

Vui lòng chỉnh sửa nhận xét của bạn để mọi người không nghĩ giải pháp mới là giải pháp bị lỗi –

+0

@AMR nếu yêu cầu là ghi đè sự kiện quan trọng, sau đó đảm bảo đặt [Đã xử lý] (http://msdn.microsoft.com) /en-us/library/system.windows.routedeventargs.handled.aspx) bất động sản sau khi điều kiện được đáp ứng: 'e.Handled = true;' –

+0

Cảm ơn người đàn ông, công trình này! – Kitze

-1

Bạn có thể nghe họ KeyDown sự kiện của TextBox. Trong trình xử lý, hãy kiểm tra xem phím mũi tên đã được nhấn chưa (bạn có thể cần phải nghe phím để tránh kích hoạt mã nhiều lần nếu người dùng giữ nút quá lâu).

private void textBox1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Down) 
    { 
     // Do some code... 
    } 
} 
+0

giải pháp bạn đã trình bày là giải pháp winform –

+0

Tôi đã thử cách này, nó không hoạt động. – Kitze

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