《键盘和鼠标事件.ppt》由会员分享,可在线阅读,更多相关《键盘和鼠标事件.ppt(21页珍藏版)》请在优知文库上搜索。
1、目录目录n键盘事件键盘事件 KeyPress事件 KeyDown事件 KeyUp事件n鼠标事件鼠标事件 MouseMove事件。事件。MouseHover/MouseDown/MouseWheel事件事件 MouseUp事件事件 MouseLeave事件事件C#主要为用户提供了三种键盘事件:按下某ASCII字符键时发生KeyPressKeyPress事件按下任意键时发生KeyDownKeyDown事件释放键盘上任意键时发生KeyUpKeyUp事件。10.1.1 KeyPress10.1.1 KeyPress事件事件当用户按下又放开某个ASCII字符键时,会引发当前拥有焦点对象的KeyPress
2、事件。10.1 10.1 键盘事件键盘事件1.判断、处理用户按键通过KeyEventArgs类的返回参数可以判断用户按下的是哪个键。例如在窗体、文本框等控件的KeyPress事件过程中书写类似如下代码,可实现用户按键的判断。private void Form1_KeyPress(object sender,KeyPressEventArgs e)if(e.KeyChar=(Char)Keys.Enter)label1.Text=你按下了Enter键;2.KeyPress事件应用实例【例10-1】设计一个ASCII码查询程序。用户按下某一键后屏幕显示该键名及对应的ASCII码。窗体Form1的K
3、eyPress事件时代码为:private void Form1_KeyPress(object sender,KeyPressEventArgs e)/e.KeyChar返回用户在键盘上按下的字符 switch(e.KeyChar)case(char)Keys.Back:label1.Text=退格键:+(int)Keys.Back+n+label1.Text;break;case(char)Keys.Tab:label1.Text=Tab键:+(int)Keys.Tab+n+label1.Text;break;case(char)Keys.Enter:)label1.Text=回车键(En
4、ter):+(int)Keys.Enter+n+label1.Text;break;case(char)Keys.Space:label1.Text=空格键:+(int)Keys.Space+n+label1.Text;break;case(char)Keys.Escape:label1.Text=Esc键:+(int)Keys.Escape+n+label1.Text;break;default:label1.Text=e.KeyChar+:+(int)e.KeyChar+n+label1.Text;break;10.1.2 KeyDown10.1.2 KeyDown和和KeyUpKeyUp
5、事件事件 KeyDown和KeyUp事件发生在用户按下键盘上某键时,通常可编写其事件代码以判断用户按键的情况。1.判断、处理用户按键 当用户按下键盘上的任意键时,会引发当前拥有焦点对象的KeyDown事件。用户放开键盘上任意键时,会引发KeyUp事件。KeyDown和KeyUp事件通过e.KeyCode或e.KeyValue返回用户按键对应的ASCII码。2.KeyDown和KeyUp事件应用实例【例10-2】设计一个数字文本加密程序。当用户在文本框中输入一个字母字符时,程序自动将其按一定的规律(算法)转换成其他字符并显示到文本框中,在标签控件中显示原始字符。按BackSpace键可删除光标前
6、一个字符,标签中的内容随之变化。按Enter键时显示信息框,单击【确定】按钮结束程序运行。若用户按下CtrlShiftEnd组合键,则直接结束程序运行。文本框textBox1的KeyDown事件代码为:private void textBox1_KeyDown(object private void textBox1_KeyDown(object sender,KeyEventArgs e)sender,KeyEventArgs e)if(textBox1.Text=)if(textBox1.Text=)x=;x=;else else x=textBox1.Text;x=textBox1.Te
7、xt;if(e.KeyValue=65&e.KeyValue=90)if(e.KeyValue 90)/录入大写字母 label1.Text+=(char)(e.KeyValue+32);/如果按下的是BackSpace键,删除标签中最后一个字符 else if(int)e.KeyCode=(int)Keys.Back)if(label1.Textlabel1.Text.Length-1=:)return;label1.Text=label1.Text.Remove(label1.Text.Length-1);private void textBox1_KeyUp(object sender,
8、KeyEventArgs e)/如果用户按下的是Enter键 if(int)e.KeyCode=(int)Keys.Enter)/如果用户单击了【确定】按钮则结束程序运行 if(MessageBox.Show(您确实要退出程序吗?,确认退出,MessageBoxButtons.OKCancel,MessageBoxIcon.Information)=DialogResult.OK)this.Close();10.2.1 10.2.1 鼠标事件发生的顺序鼠标事件发生的顺序当用户操作鼠标时,将触发一些鼠标事件。这些事件的发生顺序如下:MouseEnter:当鼠标指针进入控件时触发的事件。Mouse
9、Move:当鼠标指针在控件上移动时触发的事件。MouseHover/MouseDown/MouseWheel:MouseHover事件当鼠标指针悬停在控件上时被触发;MouseDown事件在用户按下鼠标键时被触发;MouseWheel事件在拨动鼠标滚轮并且控件有焦点时被触发。MouseUp:当用户在控件上按下的鼠标键释放时触发。MouseLeave:当鼠标指针离开控件时触发。10.2 10.2 鼠标事件鼠标事件 【例10-3】设计一个MouseDown事件的示例程序。程序启动后,当用户在窗体上单击或双击右键或左键时,屏幕上显示用户的操作,程序运行结果下图所示。10.2.2 MouseDown1
10、0.2.2 MouseDown和和MouseUpMouseUp事件事件窗体Form1的MouseDown事件代码为:private void Form1_MouseDown(object sender,MouseEventArgs e)string str1=,str2=;switch(e.Button)/判断用户按下了哪个鼠标键 case MouseButtons.Right:str1=右;break;case MouseButtons.Left:str1=左;break;/判断用户连续按下并释放了几次鼠标键 switch(e.Clicks)case 1:str2=单;break;case
11、2:str2=双;break;label1.Text=您+str2+击了鼠标+str1+键!;label1.Left=(this.Width-label1.Width)/2;10.2.3 MouseMove10.2.3 MouseMove事件事件 当用户在移动鼠标指针到控件上时触发MouseMove事件,与该事件相关的事件还有MouesEnter和MouseLeave事件分别在鼠标指针进入控件和离开控件时发生。【例10-4】设计一个程序。要求将鼠标指针指向和离开按钮Button1时,按钮上显示的图片不同。当鼠标在窗体上移动时,标签中实时显示当前指针的坐标值(X,Y)。MouseMove、Mou
12、seEnter和MouseLeave事件应用示例 窗体Form1的MouseMove事件代码为:private void Form1_MouseMove(object sender,MouseEventArgs e)/e.X和e.Y为MouseEventArgs类返回的当前鼠标位置坐标 label1.Text=当前鼠标的位置为:+e.X+,+e.Y;按钮Button1的MouseEnter事件代码为:private void button1_MouseEnter(object sender,EventArgs e)button1.Image=Image.FromFile(C:笑脸.gif);按钮Button1的MouseLeave事件代码为:private void button1_MouseLeave(object sender,EventArgs e)button1.Image=Image.FromFile(C:哭脸.jpg);