2017-02-01 8 views
0

現在プロジェクトで作業していて、キーの押下で機能をトリガーするウィンドウにKeyEventHandlerを追加したいとします。C#関数をトリガーするホットキーを作成する

私の問題は、しかし、私はこの

testObject.KeyDown += new KeyEventHandler(doSomethingOnKeyPress);

private void doSomethingOnKeyPress(object sender, KeyEventArgs e)) 
{ 
    if (e.Control && e.KeyCode == Keys.R) 
    { 
    // do something 
    } 
} 

のようなハンドラを追加したいときに私はプログラムがInput.KeyEventHandlerForms.KeyEventHandlerを変換することはできませんというエラーになってること、です。

誰でもこの問題について正しい方向に私を導くことができますか?私はあなたが間違った名前空間を使用だと思う

+0

はどのようなタイプしたいあなたtestObjectありますか? 'doSomethingOnKeyPress'がイベントハンドラシグネチャと一致する場合は、コンストラクタ' + = new KeyEventHandler(doSomethingOnKeyPress) 'を使用する必要はありません。 'testObject.KeyDown + = doSomethingOnKeyPress'が動作します。 –

+0

私が使っているテストオブジェクトはTextBoxです – chunath

答えて

0

private void doSomethingOnKeyPress(object sender, Forms.KeyEventHandler e)) 

または名前空間は動作するはずの変更使用してセクション

0

に整理整頓に

private void doSomethingOnKeyPress(object sender, KeyEventArgs e)) 

を変更しようとするが、私はする必要があります推測します他の方法、すなわち

private void doSomethingOnKeyPress(object sender, System.Windows.Input.KeyEventArgs e) 
{ 
    if (e.Control && e.KeyCode == Keys.R) 
    { 
    // do something 
    } 
} 
0

あなたは誤ってイベントKeyPress & KeyDownを混同しています。

KeyPress & KeyDownは2つの異なるイベントであるため、異なるイベントハンドラがあります。

KeyDownは次のとおりです。 testObject.KeyDown + =新しいKeyEventHandler(doSomethingOnKeyPress);

0
private void myClass(){ 
//doing something 
} 
private void button1_KeyDown(object sender, KeyEventArgs e) 
{ 
if(e.KeyCode == Keys.W){ 
myClass(); 
} 
} 

あなたはD Aを作ることができる。例えば、「W」それを使用するか、またはあなたが

関連する問題