2011-11-30 10 views
5

Visual Studio 2010を使用してVisual C#アプリケーションを作成しています。にアプリケーションの環境設定を入力すると、何らかのテキストボックス入力を使用するキーボードショートカットをカスタマイズできます。私はキーボード入力を記録する方法と、それをユーザーアプリケーションの設定に保存する方法を理解していますが、この機能を持つ入力コントロールは見つかりません。カスタマイズ可能なキーボードショートカットの入力を作成する

I.e.このような何か:

enter image description here

しかし、Windowsフォームを使用した(注:上記のアプリストアからOS X用DIVVYからです)。

これを処理する組み込みの機能はありますか? いいライブラリやカスタム入力がありますか?

そうでなければ、このようなものを実装する方法についての提案はありますか?

ソリューション:

バ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

関連する問題