第 1 章 Visual C# 概述 第 2 章 C# 语法基础 第 3 章 顺序结构程序设 计 第 4 章...

26
第1第 Visual C# 第 2 C# 第第第第 3 第第第第第第第第 4 第第第第第第第第 5 第第第第第第第第 6 第第 第第第第第第 7 第第 8 第 第第第第第第第第 9 第 第第 第第第第第第第 第 10 第 第第第第第第 11 ActiveX 第第 12 第 第第第第第 第 13 第 第第 Web 第第第第 第 14 第 第第第第第第第第第第第 Visual C# 2005 第第第第

Transcript of 第 1 章 Visual C# 概述 第 2 章 C# 语法基础 第 3 章 顺序结构程序设 计 第 4 章...

第 1 章 Visual C# 概述第2章 C#语法基础第3章 顺序结构程序设计第4章 选择结构程序设计第5章 循环结构程序设计第6章 面向对象编程技术第7章 继承

第8章 数组与自定义类型第9

章 菜单、工具栏与状态栏

第 10 章 鼠标键盘事件第11章 ActiveX控件第12章 数据库技术第 13 章 开发 Web 应用程

序第 14 章 异常处理与部署

应用程序下一页

Visual C# 2005 程序设计

上一页

第 10 章 键盘和鼠标事件 10.1 键盘事件C# 主要为用户提供了三种键盘事件,按下某 ASCII 字符键时发生 KeyPress 事件,按下任意键时发生 KeyDown 事件和释放键盘上任意键时发生KeyUp 事件。 10.1.1 KeyPress 事件当用户按下又放开某个 ASCII 字符键时,会引发当前拥有焦点对象的 KeyPress 事件。

章节目录 上一页 下一页

1. 判断、处理用户按键通过 KeyEventArgs 类的返回参数可以判断用户按下的是哪个键。例如在窗体、文本框等控件的KeyPress 事件过程中书写类似如下代码,可实现用户按键的判断。 private void Form1_KeyPress(object sender, KeyPressEventArgs e){ if (e.KeyChar == Keys.Enter) label1.Text = " 你按下了〈 Enter 〉键 ";}

章节目录 上一页 下一页

2. KeyPress事件应用实例【例 10-1 】设计一个 ASCII 码查询程序。程序启动后显示使用方法提示,用户按下某一键后屏幕显示该键名及对应的 ASCII 码。单击窗体可以清屏。

章节目录 上一页 下一页

窗体 Form1 的 KeyPress 事件时代码为:private void Form1_KeyPress(object sender, KeyPre

ssEventArgs 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 = " 回车键 (Enter) : " + (int)Ke

ys.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 KeyDown 和 KeyUp 事件KeyDown 和 KeyUp 事件发生在用户按下键盘上

某键时,通常可编写其事件代码以判断用户按键的情况。

1. 判断、处理用户按键当用户按下键盘上的任意键时,会引发当前拥有

焦点对象的 KeyDown 事件。用户放开键盘上任意键时,会引发 KeyUp 事件。 KeyDown 和KeyUp 事件通过 e.KeyCode 或 e.KeyValue 返回用户按键对应的 ASCII 码。

章节目录 上一页 下一页

2. 判断、处理组合键在 KeyDown 和 KeyUp 事件中,如果希望判断用

户 曾 使 用 了 怎 样 的 〈 Ctrl 〉 、 〈 Shift 〉 、〈 Alt 〉组合键,可通过对象 e 的 Control 、 Shift 和 Alt 属性判断。

例如,下列代码使用户在 TextBox1 中按下〈 Ctrl 〉+〈 Shift 〉+〈 Alt 〉+〈 End 〉键时结束运行。

if (e.Alt && e.Control && e.Shift && e.KeyValue == 35) // 〈 End 〉键的 KeyValue 值为 35

this.Close();

章节目录 上一页 下一页

3. KeyDown 和 KeyUp 事件应用实例【例 10-2 】设计一个数字文本加密程序。当用户

在文本框中输入一个数字字符时,程序自动将其按一定的规律(算法)转换成其他字符并显示到文本框中,在标签控件中显示原始字符。按〈 BackSpace 〉键可删除光标前一个字符,标签中的内容随之变化。按〈 Enter 〉键时显示信息框,单击【确定】按钮结束程序运行。若用户按下〈 Ctrl 〉+〈 Shift 〉+〈 End 〉组合键,则直接结束程序运行。

章节目录 上一页 下一页

程序运行结果 确认退出

章节目录 上一页 下一页

文本框 textBox1 的 KeyDown 事件代码为:private void textBox1_KeyDown(object sender, KeyEventArgs e){ if (textBox1.Text == "") x = ""; else x = textBox1.Text; // 如果用户按下的不是〈 BackSpace 〉键 if ((int)e.KeyCode != (int)Keys.Back && (e.KeyValue >= 48 && e.KeyValue <= 57 || e.KeyValue >= 96 && e.KeyValue <= 105))

章节目录 上一页 下一页

{// 将输入的实际字符存入 Label1 的 Text 属性中 if(e.KeyValue<96) // 录入键区的数字健 label1.Text += (char)e.KeyValue; else // 数字键区的数字健 label1.Text += (char)(e.KeyValue-48); } // 如果按下的是〈 BackSpace 〉键,删除标签中最后一个字符 else if ((int)e.KeyCode == (int)Keys.Back) {if (label1.Text[label1.Text.Length - 1] == ' : ') return; label1.Text = label1.Text.Remove(label1.Text.Length - 1); } }

章节目录 上一页 下一页

文本框 textBox1 的 KeyUp 事件代码为: private void textBox1_KeyUp(object sender, KeyEventArgs e){ // 如果用户按下了〈 Ctrl 〉+〈 Shift 〉+〈 End 〉组合键,则直接退出 if (e.Control && e.Shift && e.KeyValue == 35) this.Close(); // 如果用户按下的不是〈 BackSpace 〉或〈 Enter 〉键 if ((int)e.KeyCode != (char)Keys.Back && (int)e.KeyCode != (char)Keys.Enter)

章节目录 上一页 下一页

{ switch ((int)e.KeyCode) { case (char)Keys.D1: // 录入键区的“ 1” 与数字键区的“ 1”共享同一操作 case (char)Keys.NumPad1: textBox1.Text = x + "!"; break; ... } // 将文本框中的光标移动到最后 textBox1.SelectionStart=extBox1.TextLength; }

章节目录 上一页 下一页

// 如果用户按下的是〈 Enter 〉键 if ((int)e.KeyCode == (int)Keys.Enter) {// 如果用户单击了【确定】按钮则结束程序运行 if (MessageBox.Show(“您确实要退出程序吗?” , " 确认退出 ", MessageBoxButtons.OKCancel , MessageBoxIcon.Information)== DialogResult.OK) this.Close(); }}

章节目录 上一页 下一页

10.2 鼠标事件 10.2.1 鼠标事件发生的顺序当用户操作鼠标时,将触发一些鼠标事件。这些事件的发生顺序如下:

①MouseEnter :当鼠标指针进入控件时触发的事件。 ②MouseMove :当鼠标指针在控件上移动时触发的事件。 ③ MouseHover/MouseDown/MouseWheel : 其 中 MouseHover

事件当鼠标指针悬停在控件上时被触发; MouseDown 事件在用户按下鼠标键时被触发; MouseWheel 事件在拨动鼠标滚轮并且控件有焦点时被触发。

④MouseUp :当用户在控件上按下的鼠标键释放时触发 MouseUp 事件。

⑤MouseLeave :当鼠标指针离开控件时触发 MouseLeave 事件。

章节目录 上一页 下一页

10.2.2 MouseDown 和 MouseUp 事件当鼠标指针在某个控件上,用户按下鼠标键时,将发生MouseDown 事件。当指针保持在控件上,用户释放鼠标键时,发生 MouseUp 事件。当用户移动鼠标指针到控件上时,将发生MouseMove 事件。 例如,下列语句判断用户是否右键双击了窗体,若是则退出程序。请注意代码中的粗体字部分。private void Form1_MouseDown(object sender, MouseEventArgs e){ if (e.Button == MouseButtons.Right && e.Clicks == 2) this.Close();}

章节目录 上一页 下一页

【例 10-3 】设计一个 MouseDown 事件的示例程序。程序启动后,当用户在窗体上单击或双击右键或左键时,屏幕上显示用户的操作,程序运行结果如图 10-6所示。

章节目录 上一页 下一页

窗体 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 2: str2 = "双 "; break;

}

label1.Text = " 您 " + str2 + " 击了鼠标 " + str1 + " 键! ";

label1.Left = (this.Width - label1.Width) / 2;

}

章节目录 上一页 下一页

10.2.3 MouseMove 事件当用户在移动鼠标指针到控件上时触发 MouseMove 事件,与该事件相关的事件还有 MouesEnter和 MouseLeave 事件分别在鼠标指针进入控件和离开控件时发生。【例 10-4 】设计一个程序。要求将鼠标指针指向和离开按钮 Button1 时,按钮上显示的图片不同。当鼠标在窗体上移动时,标签中实时显示当前指针的坐标值( X,Y )。

章节目录 上一页 下一页

MouseMove 、 MouseEnter 和 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("face05.ico");}

章节目录 上一页 下一页

按钮 Button1 的 MouseLeave 事件代码为:private void button1_MouseLeave(object sender,

EventArgs e)

{

button1.Image = Image.FromFile("face04.ico");

}

章节目录 上一页 下一页

章节目录 上一页 下一页

AAA