C# テキストボックス KeyPress KeyDown KeyUp 使い方

C#でのテキストボックスのキー入力イベントについて紹介していきます。

キー入力には、主に3つのイベントがあるので、それぞれの特徴を見ていきましょう。

キー入力イベント KeyPress KeyDown KeyUp

キー入力イベントには、「keypress」「keydown」「keyup」の3つのイベントがあります。

それぞれの特徴をまとめてみました。

「KeyDown・KeyUp・KeyPress」発生イベントの違い
  • 「KeyPress」と「KeyDown」は、キーを押下した時にイベントが発生します。
  • 「KeyUp」は、指がキーから離れたときに発生します。
「KeyDown・KeyUp」「KeyPress」押されたキーの違い
  • 「KeyDown」と「KeyUp」は、すべてのキーボートが押されたときに発生します。
  • 「KeyPress」は、「a」「b」「c」など文字のキーボードが押されたときに発生します。「tab」「shift」などを押されてもイベントは発生しません。
    ただし「Enter」「Back Space」「Esc」が押されたときはイベントが発生します。

まずは特徴をおさておきましょう。

 

KeyPressのイベント作成

ここからは例を紹介していきます。

まずは、KeyPressを使用してみましょう。

テキストボックスを配置したら、イベント(稲妻マーク)アイコンをクリックして、「KeyPress」の部分でダブルクリックしてみましょう。

すると、テキストボックスに対して、「KeyPress」イベントが作成されましたと思います。

テキストボックスにキーを押されたときに、メッセージボックスでどのキーが押されたのか表示する例を作成していきます。

KeyPressイベントで、どのキーを入力されたのか取得するには「e.KeyChar」で取得することができます。

using System.Windows.Forms;

namespace c_sharp
{
    public partial class frmKeyPress : Form
    {
        public frmKeyPress()
        {
            InitializeComponent();
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            MessageBox.Show("「" + e.KeyChar + "」が入力されました。");
        }
    }
}

結果

試しに「a」を入力してみるとメッセージが表示されました。

このように、KeyPressからは「KeyChar」で入力された文字列を取得することができます。

特徴にも記載しましたが、「文字のキーボード」と「Enter」「BackSpace」「Esc」の時のみイベントが発生します。

KeyDown KeyUpのイベント作成

続いて、KeyDownとKeyUpを試していきましょう。

先ほどのKeyPressと同様にイベントを作成していきます。

テキストボックスに対して、「KeyDown」と「KeyUp」イベントが作成されました。

 

それでは、先ほどのようにメッセージボックスを表示してみましょう。

「KeyPress」は文字列を表示する「e.KeyChar」のプロパティがありましたが、「KeyDown」と「KeyUp」にはありません。

代わりに「e.KeyCode」がありますので、こちらで表示してみましょう。

using System.Windows.Forms;

namespace c_sharp
{
    public partial class frmKeyPress : Form
    {
        public frmKeyPress()
        {
            InitializeComponent();
        }

        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.B) {
                MessageBox.Show("「" + e.KeyCode + "」が入力されました。");
            };
        }

        private void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.A)
            {
                MessageBox.Show("「" + e.KeyCode + "」が入力されました。");
            };
        }
    }
}

 

「KeyDown」と「KeyUp」は、文字列を取得することはできず、文字コードで表示されます。

なので、「Keys.」を利用して、指定したキーを押されたとき処理をする、という感じでよく使います。

 

KeyUpイベント

KeyDownイベント

また、このイベントを利用して、一番よく使用されるのが、Enterキーでのイベントです。

 

まとめ

今回は、キー入力イベントについてまとめました。

「KeyPress」を使うのか「KeyDown」「KeyUp」を使うのかをやりたいことから判断して使用するようにしましょう。

「KeyPress」は、文字列を取得することができます。

「KeyDown」「KeyUp」はKeyCodeを取得することができま

 

C#の記事一覧

おすすめの記事