2011-11-30 29 views
5

Tôi đang sử dụng Visual Studio 2010 để tạo ứng dụng C# trực quan và tôi muốn bao gồm một số tùy chọn trong tùy chọn của ứng dụng để tùy chỉnh phím tắt bằng cách sử dụng loại đầu vào hộp văn bản nào đó. Tôi hiểu cách ghi lại đầu vào bàn phím và cách lưu nó vào cài đặt ứng dụng của người dùng, nhưng tôi không thể tìm thấy bất kỳ điều khiển đầu vào nào có chức năng này.Tạo một đầu vào cho phím tắt có thể tùy chỉnh

I.e. một cái gì đó như thế này:

enter image description here

Nhưng sử dụng cửa sổ hình thức (Lưu ý: Trên đây là từ phần chia ra cho OS X từ app store).

Có chức năng tích hợp nào để xử lý việc này không? Có thư viện hay đầu vào tùy chỉnh nào tôi có thể sử dụng không?

Nếu không, có bất kỳ đề xuất nào về cách thực hiện điều gì đó như thế này không?

Giải pháp:

Sử dụng câu trả lời Bas B và một số logic khác:

private void fShortcut_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode != Keys.Back) 
    { 
     Keys modifierKeys = e.Modifiers; 
     Keys pressedKey = e.KeyData^modifierKeys; //remove modifier keys 

     if (modifierKeys != Keys.None && pressedKey != Keys.None) 
     { 
      //do stuff with pressed and modifier keys 
      var converter = new KeysConverter(); 
      fShortcut.Text = converter.ConvertToString(e.KeyData); 
      //At this point, we know a one or more modifiers and another key were pressed 
      //modifierKeys contains the modifiers 
      //pressedKey contains the other pressed key 
      //Do stuff with results here 
     } 
    } 
    else 
    { 
     e.Handled = false; 
     e.SuppressKeyPress = true; 

     fShortcut.Text = ""; 
    } 
} 

Trên đây là một cách để biết khi nào một sự kết hợp phím tắt hợp lệ được nhập bằng cách kiểm tra nếu cả hai phím modifier và nhấn một phím khác.

+0

Bạn đang tìm kiếm các phím tắt cho VS2010 hoặc ứng dụng của bạn? –

+0

Đối với ứng dụng của tôi – WilHall

Trả lời

5

Bạn có thể có người dùng nhập từ nóng ưa thích trong một TextBox, sau đó xử lý sự kiện KeyDown, ví dụ:

private void textBox1_KeyDown(object sender, KeyEventArgs e) 
    { 
     Keys modifierKeys = e.Modifiers; 

     Keys pressedKey = e.KeyData^modifierKeys; //remove modifier keys 

     //do stuff with pressed and modifier keys 
   var converter = new KeysConverter(); 
     textBox1.Text = converter.ConvertToString(e.KeyData); 
} 

Edit: Cập nhật để bao gồm câu trả lời Stecya của.

+0

Điều này làm việc hoàn hảo. Tôi đã sử dụng điều này, cùng với một số logic khác, để hoàn thành công việc. Tôi sẽ cập nhật câu hỏi với giải pháp cuối cùng. – WilHall

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