1. 程式人生 > >KeyUp、keyPress、keyDown的簡單理解

KeyUp、keyPress、keyDown的簡單理解

對於處理各種普通字元來說,使用KeyPress事件進行判斷再好不過了。 

但KeyPress有其自身的侷限性。它不能捕捉功能鍵的按鍵事件,如:F1——F12,shift,Ctrl,Alt,Tab,方向鍵,以及Insert,Home ,print等。 
需要對這些按鍵事件進行處理的時候,請使用KeyDown或KeyUP事件。 
當然,KeyDown或KeyUP事件 也可以對各種字元進行處理

首先將KeyPreview屬性設定為True;

簡單使用舉例:

  public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        //KeyPress:當在Form1中任意一處輸入字元f時(游標在form中),執行下面的事件
        private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(e.KeyChar=='f')
            {
                MessageBox.Show("form1");
                e.Handled = true;
            }
        }

        //當在button1上輸入b時,彈出事件框
        private void button1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 'b')
            {
                MessageBox.Show("button");
                e.Handled = true;
            }
        }

        //當在textBox1中輸入字元t時,執行事件
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 't')//當我輸入1時,發生下面的事件
            {
                MessageBox.Show(e.KeyChar.ToString ());
                e.Handled = true;
            }
        }

        //當我在textBox1中按下Backspace鍵
        private void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode  == Keys.Back)//當我輸入1時,發生下面的事件
            {
                MessageBox.Show("剛才我按了back鍵");
                e.Handled = true;
            }
        }

        //當我在textBox1中輸入A
        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.KeyCode==Keys.A)
            {
                textBox1.Text = "剛才我按了A鍵";
            }
        }

        private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            try
            {
                int kc = (int)e.KeyChar;
                if ((kc < 48 || kc > 57) && kc != 8)
                {
                    MessageBox.Show("不等於8");
                    e.Handled = true;
                }
            }
            catch
            {

            }

        }

    }