2011-11-30 89 views
5

我正在使用Visual Studio 2010創建一個可視化C#應用程序,並且我想在我的應用程序的首選項中包含一些選項,用於使用某種文本框輸入來自定義鍵盤快捷鍵。我瞭解如何記錄鍵盤輸入以及如何將其保存到用戶應用程序設置,但我找不到具有此功能的任何輸入控件。爲可定製鍵盤快捷鍵創建輸入

I.e.是這樣的:

enter image description here

但使用Windows窗體(注:以上是從瓜分了OS X從App Store)。

是否有任何內置的功能來處理? 有沒有我可以使用的任何好的庫或自定義輸入?

否則,有關如何去執行這樣的事情的任何建議?

解決方案:

使用巴斯B的回答和其他一些邏輯:

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 = ""; 
    } 
} 

以上是一種方法來告訴當一個有效的快捷組合是通過檢查進入如果兩個組合鍵,並按下另一個鍵。

+0

您是否在尋找VS2010或您的應用程序的鍵盤快捷鍵? –

+0

對於我的應用程序 – WilHall

回答

5

你可以讓用戶在文本框中輸入首選快捷方式,然後處理KeyDown事件,例如:

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); 
} 

編輯:更新以包括Stecya的答案。

+0

這工作完美無瑕。我用這個和其他一些邏輯來完成工作。我會用最終解決方案更新問題。 – WilHall