none
キーボード入力をフォームレベルで処理するには RRS feed

  • 質問

  • MSDNに「キーボード入力をフォームレベルで処理する」トピックで記事が存在したのですが、C#Expressでフォームへの入力に対する制御を行おうとした場合、KeyPressEventArgsのe.KeyCharが存在しません。

    そのため他のe.KeyValueなどで判定をしようと思ったのですが、どうも Keys のコードと違うのかうまく一致させることができません。(半角マイナスを入力した場合Keys.Subtractだと一致しない、他)

    四則演算子とイコールが入力された場合を取得したいのですが、どうしたらよいのでしょうか?

    2006年5月18日 6:25

すべての返信

  • KeyPress イベントじゃなくて KeyDown や KeyUp イベントを使ってませんか? これらは KeyPressEventArgs ではなく KeyEventArgs が提供されていますが。

    KeyPressEventArgs は KeyPress イベントで提供されます。

    2006年5月18日 6:40
  • KeyPressイベントで処理するなら e.KeyCharを判断すればいいと思いますよ

    たとえば



    switch( e.KeyChar)
    {
        case '+':
            加算処理

            break;
        case '-':
            減算処理
            break;
        case '*':
            乗算処理

            break;
        case '/':
            除算処理
            break;
        case '=':
            演算処理
            break;
    }


     

    といった具合でしょう

    e.KeyCcharはchar型を返すので Keys型で比較しても意味がありません

    2006年5月20日 5:50
  • ありがとうございます。それと、遅くなりました。すみません。

    確かに仰るとおり、KeyEventArgsを使っていました。

    KeyPressEventArgsであれば問題ありませんでした。

    2006年5月30日 16:23
  • ありがとうございます。それと、遅くなりました。すみません。

    例の通りでやりたい動作ができました。

    2006年5月30日 16:25