第6章 窗体应用程序设计 王德俊 上海交通大学继续教育学院
第6章 窗体应用程序设计 6.1 概述 6.2 组件的公共属性、事件和方法 6.3 常用的控件 6.4 常用的对话框 6.5 消息对话框 6.6 菜单和工具栏的设计
6.3 常用的控件 6.3.1 按钮类控件 6.3.2 文本类控件 6.3.3 列表类控件
6.3.1 按钮类控件 1 Button控件 2 RadioButton按钮(单选按钮) 3 CheckBox按钮(复选按钮)
1 Button控件 在设计界面中双击Button控件(或选中该按钮后在属性框中双 击“Click”项右边的空白处)即可自动形成该事件处理框架: private void button1_Click(object sender, EventArgs e) { //事件处理代码 } 运行时,单击Button按钮会触发执行Click事件的事件处理函数 button1_Click。我们需要做的是,根据需要在该函数中编写相应 的代码,以完成所需的功能。
button1_Click(object sender, EventArgs e)有两个参数(其他许多事件处理函数也有这两个参数): 用下列代码显示这两个参数的相关信息: private void button1_Click(object sender, EventArgs e) { Button bt = (Button)sender; textBox1.Text = bt.Text; Type ty = e.GetType(); textBox2.Text = ty.ToString() + ": x="+((MouseEventArgs)e).X; } textBox1和textBox2分别显示“button1”和“System.Windows.Forms. MouseEventArgs:x=72”。72是鼠标所点击位置相对于鼠标左上角的坐标值
2 RadioButton按钮(单选按钮) 单选按钮(RadioButton)为用户提供从多个选项中选择一个 选项的功能,因此单选按钮是一种“多选一”的控件 这种控件一般都是成组使用而不单独使用,并被所属的容器类 控件自然分组 属性 属性值 说明 Checked false/true 按钮是否被选中 Enabled 按钮是否可用 Appearance Normal/Button 显示样式:正常外观还是下压按钮外观
2 RadioButton按钮(单选按钮) CheckedChanged事件:当单选按钮的状态发生改变(Checked 属性值由true变为false,或由false变为true)时,该事件被触发, 执行CheckedChanged()方法。相应代码在该方法中编写: private void radioButton1_CheckedChanged(object sender, EventArgs e) { //事件处理代码 }
3 CheckBox按钮(复选按钮) 复选框(CheckBox)顾名思义可以同时选中多个选项 也就是说用户可以在窗口中同时选中多个复选框,这是其和单选 按钮的区别 复选框经常是成组使用的 CheckedChanged事件:其触发方式和处理函数的调用和编写方 法与单选按钮的相同。 属性 属性值 说明 Checked false/true 复选框是否被选中 Enabled 复选框是否可用 Appearance Normal/Button 显示样式:正常外观还是下压按钮外观
使用分组框控件 分组框(GroupBox)控件也是一种容器类控件: 在分组框控件内部的控件可以随分组框一起移动 内部控件受到分组框控件某些属性(Visible、Enabled)的控制 通过不同的分组框控件,可以对其内部控件自然分组 分组框控件用于将功能类似或关系紧密的控件分成可标识的控 件组,而不必响应分组框控件的事件 通常设置分组框控件的Text或Font属性以说明框内控件的功能 或作用,从而起修饰窗体的作用
6.3 常用的控件 6.3.1 按钮类控件 【例6.1】 按钮类控件的应用举例。 本例创建一个窗体应用程序实现的功能包括: (1)将输入的字符串转换为相应的大写或小写字符串; (2)可以指定转换的方式(大写或小写),如果不指定方式则原样输出; (3)可以限制输入字符的范围:字母、数字或其他可视字符。
6.3 常用的控件 6.3.1 按钮类控件 设计思想: (1)字符串的大、小写转换可以用类string的ToLower()和ToUpper()方 法来实现; (2)转换方式的指定通过单选按钮来辅助完成; (3)字符输入范围的限制则由辅助完成,其中还用到了TextBox类型控 件的KeyPress事件和KeyUp事件。
6.3 常用的控件 6.3.1 按钮类控件 程序的关键代码如下: { private int flag = 0; public partial class Form1 : Form { private int flag = 0; private string str = ""; public Form1() InitializeComponent(); } private void button1_Click(object sender, EventArgs e) str = textBox1.Text; if (flag == 1) str = str.ToLower(); else if (flag == 2) str = str.ToUpper(); //如果flag=0,则表示原样输出 textBox2.Text = str;
6.3 常用的控件 6.3.1 按钮类控件 private void radioButton1_CheckedChanged(object sender, EventArgs e) { flag = 1; //1表示转换为小写字符 } private void radioButton2_CheckedChanged(object sender, EventArgs e) flag = 2; //2表示转换为大写字符
6.3 常用的控件 6.3.1 按钮类控件 private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { char c = e.KeyChar; int ascii = c; //获取字符的ASCII码 if ((ascii >= 65 && ascii <= 90) || (ascii >= 97 && ascii <= 122)) { //c为字母时 if (checkBox1.Checked) str += c.ToString(); //如果允许输入字母 } else if (ascii >= 48 && ascii <= 57) //c为数字时 if (checkBox2.Checked) str += c.ToString(); //如果允许输入数字 else //c为其他可视符号 //如果允许输入其他可视符号 if (checkBox3.Checked) str += c.ToString();
6.3 常用的控件 6.3.1 按钮类控件 private void textBox1_KeyUp(object sender, KeyEventArgs e) { textBox1.Text = str; textBox1.Focus(); //将光标置于最后一个字符后面 textBox1.Select(textBox1.Text.Length, 0); }
本讲小结 1 Button控件 2 RadioButton按钮(单选按钮) 3 CheckBox按钮(复选按钮) 4 分组框(GroupBox)控件