C# 監聽滑鼠移動及keyin文字(一)

一、監聽滑鼠移動,新增一個label,並啟動Form1的 MouseMove事件


private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            label1.Text = String.Format("X:{0}, Y:{1}", e.X, e.Y);
        }
說明:把label裡的文字,放入格式化字串,其中寫入MouseEventArgs e
   的 e.X ,e.Y 位置。

補充:所有視窗程式設計(C# ,vb,android,java.....)計算視窗座標都是由左上角為基準(0,0)




二、監聽視窗中滑鼠移動的位置及按下對應的滑鼠按鍵


private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            String s="";
            switch (e.Button)
            {
                case System.Windows.Forms.MouseButtons.Left: s = "左鍵"; break;
                case System.Windows.Forms.MouseButtons.Middle: s = "中間鍵"; break;
                case System.Windows.Forms.MouseButtons.Right: s = "右鍵"; break;
            }
            label2.Text = String.Format("按了{0}於 X:{1}, Y:{2}", s, e.X, e.Y);
        }

說明:利用switch來判斷e.Button按下的是那個按鍵
   需要注意的是,判讀的值在System.Windows.Forms.MouseButtons 裡對應


三、監聽視窗 按下按鍵(KeyDown)


 private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            label3.Text = String.Format("按了 {0} 鍵,鍵碼:{1}", e.KeyCode, e.KeyValue);
            //監聽按下的鍵值
            if (e.Control && e.Alt && e.KeyCode== Keys.H)
                MessageBox.Show("哈哈哈!");//若按下Ctrl + Alt + H 
            else if (e.Control && e.Alt && e.KeyCode == Keys.E)//若按下Ctrl + Alt + E
            {
                DialogResult ans=MessageBox.Show("請問是否結束本程式?", "結束", 
                                    MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                //跳出訊息視窗,取得 DialogResult ans的結果
                if (ans == System.Windows.Forms.DialogResult.Yes)
                {
                    Application.Exit();
                }
            }

            switch (e.KeyData)
            {//監聽上、下、左、右來移動圖片
                case Keys.Up: PicLabel.Top -= PicLabel.Height / 2; break;
                case Keys.Down: PicLabel.Top += PicLabel.Height / 2; break;
                case Keys.Left: PicLabel.Left -= PicLabel.Width / 2; break;
                case Keys.Right: PicLabel.Left += PicLabel.Width / 2; break;
            }
        }
說明:KeyDown與KeyPress不同在於:
     KeyDown可聽功能鍵(如Ctrl Alt F1....)
     KeyPress是聽輸入的文字(數字、字母或特殊符號)

四、監聽視窗 按下按鍵(KeyPress)


private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            label4.Text = String.Format("打了 {0} ,字碼:{1}", e.KeyChar, (int)e.KeyChar);
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(e.KeyChar >= '0' && e.KeyChar <= '9'))
            {
                e.Handled = true;
            }
        }
說明:這裡的textBox1,會排除0~9以外的文字,換句話說就是只顯示數字
   

留言

熱門文章