2017-04-01 18 views
0

ナビゲーションキーを使用してユーザーから入力コマンドを取得しようとしています。例: - ユーザーがRightナビゲーションキーを押すと、メソッドを呼び出して何らかのタスクを実行する必要があります。Windowsフォームの入力としてナビゲーションキーを使用する方法

private void MainForm_Load(object sender, EventArgs e) 
{ 
    KeyPreview = true; 
    this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.MainForm_KeyPress); 
} 

private void MainForm_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    switch (e.KeyChar) 
    { 
     case (char)Keys.Right: 
      NextMenuItem_Click(sender, EventArgs.Empty); 
      break; 
    } 
} 

注これはアルファベット、数字、キーのような他のキーのためにうまく働いたとしても、キーを入力すること:以下は、私は、この目的のために使用しようとしたコードの一部です。しかし、何とか左、右、上、下のナビゲーションキーのために働いていない。

私を導いてください。私はあなたに喜んで感謝します:-) あなたの応答は高く評価されます! (私はのVisual Studio 2017を使用しています)

答えて

2

利用代わりにあなたのスイッチの代わりに、KeyPressイベントのKeyDownイベントを処理:

switch (e.KeyCode) 
{ 
    case Keys.Right: 
     NextMenuItem_Click(sender, EventArgs.Empty); 
     e.Handled = true; 
     e.Suppressed = true; 
     break; 
} 

そして、私はあなたが設定する必要はないと思いますKeyPreviewオプション コードの問題は、期待どおりに動作しないcharにRightキーを解析しようとすることです。

+0

ありがとうございましたSir @MetaColon ...ポイントを取得しました:-) 私は今間違いを認識しています! –

1

KeyPressedの代わりにKeyDownイベントを処理するときは、文字と数字の横にある他のキーにのみアクセスできます。 次に、Keys列挙型を利用できます。

private void Mainform_KeyDown(object sender, KeyEventArgs e) 
{ 
    switch (e.KeyCode) 
    { 
     case Keys.Right: 
      e.Handled = true; 
      e.Suppressed = true; 
      NextMenuItem_Click(sender, EventArgs.Empty); 
      break; 
    } 
} 
+0

@MetaColonを処理してキー押しを抑制してください。ただし、イベントタイプを切り替えることを忘れないでください。 – oelsardine

+0

ありがとう、私はそれを監督しました。 – MetaColon

関連する問題