
窗体与常用控件ppt课件.ppt
78页第第5章章 窗体与常用控件窗体与常用控件重要知识点:重要知识点:窗体相关操作窗体相关操作常用控件的属性、事件和方法常用控件的属性、事件和方法常用鼠标、键盘事件常用鼠标、键盘事件学习内容学习内容控件相关知识控件相关知识窗体相关知识窗体相关知识根底控件根底控件选择控件与分组控件选择控件与分组控件列表控件列表控件计时器、图片框和选项卡控件计时器、图片框和选项卡控件鼠标和键盘事件鼠标和键盘事件学习目的学习目的初步掌握初步掌握VB.NET程序界面设计的根本方法程序界面设计的根本方法控件控件(Control)和工具箱和工具箱控件是构成用户界面的根本元素控件是构成用户界面的根本元素添加控件的添加控件的2种方法:种方法:1. 单击工具箱中的控件图标,然单击工具箱中的控件图标,然后在窗体的适当位置拖放出一定后在窗体的适当位置拖放出一定大小的控件大小的控件2. 双击工具箱中的控件图标,在双击工具箱中的控件图标,在窗体的左上角出现一个默许大小窗体的左上角出现一个默许大小的控件控件的根本操作控件的根本操作选定控件选定控件调整控件大小与位置:调整控件大小与位置: 选中控件选中控件|拖拽拖拽 修正控件修正控件Size属性和属性和Location属性属性复制、删除控件复制、删除控件称号称号(Name)属性和命名商定属性和命名商定每个控件必需有每个控件必需有Name属性属性命名普通可采用命名普通可采用“匈牙利表示法〞匈牙利表示法〞 详细见教材教材P123表表5-1 窗窗 体体(Form)窗体是窗体是创建建VB.NET运用程序的运用程序的“平台〞。
平台〞窗体是程序运窗体是程序运转时与用与用户交互的交互的“窗口〞运用程序用运用程序用户界面由窗体和控件共同界面由窗体和控件共同组成每个运用程序至少要有一个窗体每个运用程序至少要有一个窗体创建建Windows运用程序运用程序时,会同步,会同步创建一建一个个Name为Form1的窗体窗体根本操作窗体根本操作添加添加/删除窗体:删除窗体: 工程工程|添加添加Windows窗体窗体 处理方案资源管理器处理方案资源管理器|右键窗体名右键窗体名|删除删除翻开窗体:翻开窗体: 处理方案资源管理器处理方案资源管理器|双击窗体名双击窗体名调整窗体大小:调整窗体大小: 选中窗体选中窗体|拖拽拖拽 修正窗体修正窗体Size属性属性窗体常用属性窗体常用属性NameTextFontBackColor、、ForeColorControlBoxMaximizeBox、、MinimizeBoxFormBorderStyleLocationStartPosition窗体常用事件窗体常用事件LoadActivatedClickResizeKeyDown、、KeyUp、、KeyPressMouseDown、、MouseUp、、MouseMove窗体常用方法窗体常用方法Show()Hide()Close()程序中调用方法的语法格式:程序中调用方法的语法格式: 对象名对象名.方法名方法名(参数参数)属性决议窗体的外观,方法表达窗体的行为,事件属性决议窗体的外观,方法表达窗体的行为,事件定义窗体与用户的交互定义窗体与用户的交互 。
根底控件根底控件—Label功能:通常用来显示固定的阐明文字功能:通常用来显示固定的阐明文字常用属性常用属性Text:标签中显示的文本,最长为:标签中显示的文本,最长为1024字节可以在程序运转时经过代码设置,如:可以在程序运转时经过代码设置,如: Label1.Text = "输入有误!输入有误!"AutoSize:能否自动调整标签的大小以顺应文:能否自动调整标签的大小以顺应文本的度,默以为本的度,默以为TrueTextAlign:标签中文本的对齐方式:标签中文本的对齐方式Font:标签中文本的字体、字形和字号:标签中文本的字体、字形和字号BackColor、、ForeColor:标签的背风光和前风:标签的背风光和前风光光Visible:标签在程序运转时能否可见,默以为:标签在程序运转时能否可见,默以为True根底控件根底控件—TextBox功能:显示文本和接纳输入的文本功能:显示文本和接纳输入的文本常用属性常用属性Text:文本框中显示的内容:文本框中显示的内容Font:文本框中文本的字体、字形和字号:文本框中文本的字体、字形和字号BackColor、、ForeColor:文本框的背风光和前风光:文本框的背风光和前风光MaxLength:文本框中最多可包容的字符:文本框中最多可包容的字符(汉字汉字)数数PasswordChar:口令或密码字符:口令或密码字符ReadOnly:文本框显示的内容能否为只读,默以为:文本框显示的内容能否为只读,默以为FalseMultiline:文本框控件能否可以接受和显示多行文本,:文本框控件能否可以接受和显示多行文本,默以为默以为FalseScrollBars:多行文本框中能否出现滚动条,默以为:多行文本框中能否出现滚动条,默以为None根底控件根底控件—TextBox常用事件常用事件TextChanged:改动文本框内容时触发该事:改动文本框内容时触发该事件件GotFocus:文本框获得焦点时触发该事件:文本框获得焦点时触发该事件LostFocus:文本框失去焦点时触发该事件:文本框失去焦点时触发该事件Tips: 焦点:接纳用户鼠标或键盘输入的才干。
焦点:接纳用户鼠标或键盘输入的才干 利用利用Focus()函数可获得焦点函数可获得焦点 例如:例如: TextBox1.Focus()根底控件根底控件—Button功能:呼应功能:呼应Click事件过程事件过程常用属性常用属性Text:按钮上显示的文本:按钮上显示的文本Font:按钮上文本的字体、字形和字号:按钮上文本的字体、字形和字号BackColor、、ForeColor:按钮的背风光和前风:按钮的背风光和前风光光FlatStyle:按钮的外观,默以为:按钮的外观,默以为Standard(三维三维外观外观)Enabled:设置按钮能否可用,默以为:设置按钮能否可用,默以为True Tips: 经过经过Text属性给按钮定义快捷键属性给按钮定义快捷键按钮文本为中文,例如:开场按钮文本为中文,例如:开场(&S),快捷键为,快捷键为Alt+S按钮文本为英文,例如:按钮文本为英文,例如:&Exit,快捷键为,快捷键为Alt+E【例【例5.1】】设计一个数制一个数制转换程序,要求:程序,要求: 单击“转换〞按〞按钮或按或按Alt+C组合合键,可将,可将输入的十入的十进制整制整数数转换为十六十六进制整数,同制整数,同时该按按钮变为无效;无效; 在上面的文本框中在上面的文本框中输入数据入数据时,可自,可自动将将转换结果文本框果文本框清空,同清空,同时使使“转换〞按〞按钮变为有效;有效; 单击“退出〞按退出〞按钮或按或按Alt+E组合合键,可封,可封锁窗体窗体(即退出程即退出程序序) 。
1.界面设计:窗体上添加界面设计:窗体上添加2个标签、个标签、2个文本个文本框和框和2个命令按钮个命令按钮2.属性设置:如下表属性设置:如下表 对 象象属性属性属性属性值窗体(窗体(Form1))Text数制数制转换Font宋体,四号宋体,四号ControlBoxFalse标签((Label1))Text输入十入十进制数制数标签((Label2))Text转换为十六十六进制数制数输入数据的文本框入数据的文本框Nametxt10显示示转换结果的文本框果的文本框Nametxt16ReadOnlyTrue““转换””按按钮( (Button1)Text转换(&C)““退出退出””按按钮( (Button2) )Text退出退出(&E)Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim x As Integer x = CInt(txt10.Text) txt16.Text = Hex(x) Button1.Enabled = False End Sub Private Sub txt10_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt10.TextChanged txt16.Text = "" Button1.Enabled = True End Sub Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End SubEnd Class3. 编写事件过程:编写事件过程:将文本框中的数据转换为整型将文本框中的数据转换为整型利用利用Hex()函数将十进制数转换为十六进制数函数将十进制数转换为十六进制数文本框内容改动时触发文本框内容改动时触发拓展思索拓展思索1.假假设输入的不是数入的不是数值类型,怎型,怎样处置?置?2.处理思理思绪:在:在进制制转换前先判前先判别输入内容能否入内容能否合法。
假合法假设合法就合法就转换,不合法就,不合法就给出提示并出提示并要求重新要求重新输入3.要点:要点:IsNumeric()函数和函数和IF分支分支语句 4.重新重新输入入时txt10文本框文本框应自自动清空5.处理方法:理方法:txt10.Text=“〞〞6.清空后清空后txt10文本框文本框应自自动获得焦点得焦点7.处理方法:理方法:txt10.Focus() Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim x As IntegerIf IsNumeric(x) = True Then x = CInt(txt10.Text) txt16.Text = Hex(x) Button1.Enabled = FalseElseMsgBox(“您您输输入的数据不合法,入的数据不合法,请请重新重新输输入!〞入!〞)txt10.Text = “〞〞txt10.Focus( )End If End Sub将将“转换〞按〞按钮的的Click事件代事件代码修正修正为::【例【例5.2】】设计一个登一个登录窗体窗体(图1),要求:,要求: 单击“登登录〞按〞按钮后出后出现图2所示所示对话框;框; 假假设用用户名或密名或密码有一个有一个为空,那么出空,那么出现图3所示所示对话框;框; 单击“退出〞按退出〞按钮可封可封锁窗体窗体(即退出程序即退出程序) 。
图图1图图2图图31.界面设计:窗体上添加界面设计:窗体上添加2个标签、个标签、2个文本框个文本框和和2个命令按钮个命令按钮2.属性设置:如下表属性设置:如下表 对 象象属性属性属性属性值窗体(窗体(Form1))Text登登录Font宋体,小四宋体,小四FormBorderStyleFixedDialong标签((Label1))Text用用户名名标签((Label2))Text密密码““姓名姓名””文本框文本框Nametxt姓名姓名““密密码””文本框文本框Nametxt密密码PasswordChar*““登登录””按按钮Namebtnbtn登登录Text登登录““退出退出””按按钮Namebtnbtn退出退出Text退出退出3. 编写事件过程:编写事件过程:Public Class Form1 Private Sub btn登录登录_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn登录登录.Click Dim a, b As String a = txt姓名姓名.Text b = txt密码密码.Text If a = "" Or b = "" Then MsgBox("用户名或密码不能为空!用户名或密码不能为空!", MsgBoxStyle.Critical, "出错提示出错提示") Else MsgBox("欢迎欢迎" & a, MsgBoxStyle.OkOnly, "欢迎欢迎") End If End Sub Private Sub btn退出退出_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn退出退出.Click Me.Close() End SubEnd Class判别输入内容能否为空判别输入内容能否为空练习作业练习作业1. 设计一个求一个求圆周周长和和圆面面积的窗体的窗体(如如图),要求:,要求:单击“计算周算周长〞按〞按钮得到周得到周长值;;单击“计算面算面积〞按〞按钮得到面得到面积值;;单击“退出〞按退出〞按钮退出程序;退出程序;显示周示周长和面和面积的文本框的文本框为只只读。
思索:思索:如何做到修正半径时将周长和面积清空?如何做到修正半径时将周长和面积清空?如何防止输入的半径不合法如何防止输入的半径不合法(例如负数或非数字例如负数或非数字)??2. 教材教材p154实训实训1单项选择按按钮控件控件——RadioButton功能:在几个选项中选择其一功能:在几个选项中选择其一常用属性常用属性Text:单项选择按钮的阐明文字单项选择按钮的阐明文字CheckAlign:圆形按钮在控件中的位置圆形按钮在控件中的位置Checked:单项选择按钮能否被选中,默以为:单项选择按钮能否被选中,默以为False常用事件:常用事件:Click 单击单项选择按钮时,该按钮即被选中,单击单项选择按钮时,该按钮即被选中,Checked属性被设置为属性被设置为True,同时触发,同时触发Click事事件复复选框控件框控件——CheckBox功能:可在几个选项中多项选择功能:可在几个选项中多项选择常用属性常用属性Text:复选框的阐明文字:复选框的阐明文字CheckAlign:小方框在控件中的位置:小方框在控件中的位置Checked:复选框能否被选中,默以为:复选框能否被选中,默以为FalseCheckState:复选框的当前形状:复选框的当前形状常用事件常用事件Click:单击复选框时,复选框形状改动,同时触发:单击复选框时,复选框形状改动,同时触发Click事事件。
件CheckedChanged:当复选框的:当复选框的Checked属性发生改动时属性发生改动时触发该事件触发该事件分分组控件控件——GroupBox功能:对窗体上的控件进展分类整理功能:对窗体上的控件进展分类整理常用属性常用属性Text:设置或取消该控件的阐明文字:设置或取消该控件的阐明文字运用方法运用方法先添加先添加GroupBox控件,再将其它控件添加到框架控件,再将其它控件添加到框架中中假设假设GroupBox控件是在其他控件之后添加的,那控件是在其他控件之后添加的,那么将窗体上的其它控件拖动到框架中么将窗体上的其它控件拖动到框架中 【例【例5.35.3】】设计一个如以下一个如以下图的的简易易计算器要求:算器要求:单击““计算〞按算〞按钮后根据后根据选择的运算符的运算符给出操作出操作结果果( (保管保管2 2位小位小数数) )单击复复选框可根据框可根据选择改改动““操作操作结果〞文本框的前果〞文本框的前风光和背光和背风光光单击““去除〞按去除〞按钮将文本框中数据去除,同将文本框中数据去除,同时去除去除单项选择按按钮和复和复选框的框的选择形状形状单击““退出〞按退出〞按钮可封可封锁窗体窗体( (即退出程序即退出程序) )。
“计算〞按算〞按钮的的Click事件事件过程代程代码::Private Sub btn计算计算_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn计算计算.Click Dim A, B As Single A = CSng(txtA.Text) : B = CSng(txtB.Text) If rdb加加.Checked = True Then txt结果结果.Text = Format(A + B, "0.00") If rdb减减.Checked = True Then txt结果结果.Text = Format(A - B, "0.00") If rdb乘乘.Checked = True Then txt结果结果.Text = Format(A * B, "0.00") If rdb除除.Checked = True Then txt结果结果.Text = Format(A / B, "0.00")End Sub“去除〞按去除〞按钮的的Click事件事件过程代程代码::Private Sub btn去除去除_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn去除去除.Click txtA.Text = "" : txtB.Text = "" : txt结果结果.Text = "" rdb加加.Checked = False : rdb减减.Checked = False rdb乘乘.Checked = False : rdb除除.Checked = False chk红红.Checked = False : chk黄黄.Checked = FalseEnd Sub将文本框中的数据转换为单精度型将文本框中的数据转换为单精度型经过经过Checked属性判别选择了哪种运算属性判别选择了哪种运算利用利用Format函数保管函数保管2位小数位小数“字体字体红色〞复色〞复选框的框的CheckedChanged事件事件过程代程代码::Private Sub chk红红_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chk红红.CheckedChanged If chk红红.Checked = True Then txt结果结果.ForeColor = Color.Red '变为红色变为红色 Else txt结果结果.ForeColor = Color.Black '恢复黑色恢复黑色 End If End Sub“背景黄色〞复背景黄色〞复选框的框的CheckedChanged事件事件过程代程代码::Private Sub chk黄黄_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chk黄黄.CheckedChanged If chk黄黄.Checked = True Then txt结果结果.BackColor = Color.Yellow '黄色黄色 Else txt结果结果.BackColor = Color.White '恢复白色恢复白色 End If End Sub拓展思索和练习拓展思索和练习1.“计算〞按算〞按钮的条件的条件语句可以句可以换成多分支的成多分支的吗??2.“字体字体红色〞复色〞复选框和框和“背景黄色〞复背景黄色〞复选框的代框的代码可以写在可以写在Click事件中事件中吗??3.Tips::Click事件必然事件必然导致致CheckedChanged。
但但是反是反过来,来,CheckedChanged并不一定是由并不一定是由Click引引发也可以经过切切换焦点后按空格焦点后按空格键引引发 4.假假设操作数操作数B输入了入了0,,该怎怎样办??5.假假设输入的不是数入的不是数值,,该怎怎样办??6.注:以上注:以上3和和4即即为教材教材实训2的的标题要求列表框控件列表框控件——ListBox功能:显示供选择的工程列表功能:显示供选择的工程列表常用属性常用属性Items :设置列表框中的显示内容,是一个集合属性,:设置列表框中的显示内容,是一个集合属性,其中包括其中包括Count属性:获取列表框中的工程总数属性:获取列表框中的工程总数Item属性:获取列表框中指定索引号的工程属性:获取列表框中指定索引号的工程(索引号从索引号从0开场开场)Add方法方法 :在列表框中添加工程,格式为:在列表框中添加工程,格式为 列表框称号列表框称号.Items.Add(工程内容工程内容) Remove方法:删除列表框中指定的工程,格式为方法:删除列表框中指定的工程,格式为 列表框称号列表框称号.Items.Remove(工程内容工程内容)RemoveAt方法:删除列表框中指定索引号的工程,方法:删除列表框中指定索引号的工程,格式为格式为 列表框称号列表框称号.Items.RemoveAt(工程索引号工程索引号) Clear方法:删除列表框中的一切工程,格式为方法:删除列表框中的一切工程,格式为 列表框称号列表框称号.Items.Clear()列表框控件列表框控件——ListBox常用属性〔续〕常用属性〔续〕Sorted:设置能否对列表框中的工程进展排序,:设置能否对列表框中的工程进展排序,默以为默以为False 。
假设设置为假设设置为True,那么按首,那么按首字符的字母顺序排序,数字项排在字母项前字符的字母顺序排序,数字项排在字母项前面面Text:用于前往当前在列表框中选定的工程的:用于前往当前在列表框中选定的工程的内容,只能在程序代码中援用内容,只能在程序代码中援用SelectedIndex:用于设置或前往当前在列表:用于设置或前往当前在列表框中选定工程的索引号假设没有选定工程,框中选定工程的索引号假设没有选定工程,那么它的值为那么它的值为-1,只能在程序代码中援用,只能在程序代码中援用列表框控件列表框控件——ListBox常用事件常用事件SelectedIndexChanged:改动列表框中的选择时:改动列表框中的选择时触发触发Click:单击列表框时触发:单击列表框时触发DoubleClick:双击列表框时触发:双击列表框时触发【例【例题】】设计一个如以下一个如以下图的点菜程序要求:的点菜程序要求:在在““本店菜本店菜单〞列表框中〞列表框中选择某一菜名后某一菜名后单击““选择〞按〞按钮可以可以点菜点菜在在““已点菜色〞列表框中已点菜色〞列表框中选择某一菜名后某一菜名后单击““删除〞按除〞按钮可以可以取消点菜取消点菜单击““下下单〞按〞按钮弹出出对话框告知用框告知用户已下已下单,并清空,并清空““已点菜已点菜色〞列表框色〞列表框单击““退出〞按退出〞按钮可封可封锁窗体窗体( (即退出程序即退出程序) )。
窗体的窗体的Load事件过程代码:事件过程代码: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ListBox1.Items.Add("水煮鱼"):ListBox1.Items.Add("铁板牛肉") ListBox1.Items.Add("鱼香肉丝"):ListBox1.Items.Add("番茄炒蛋") ListBox1.Items.Add("油焖大虾"): ListBox1.Items.Add("手撕包菜") ListBox1.Items.Add("青椒土豆丝"):ListBox1.Items.Add("海带排骨汤") ListBox1.Items.Add("紫菜蛋汤")End Sub给“本店菜本店菜单〞列表框添加工程〞列表框添加工程“选择〞按〞按钮的的Click事件事件过程代程代码::Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim selected_dish As String selected_dish = ListBox1.Text ListBox2.Items.Add(selected_dish)End Sub获得已选工程内容获得已选工程内容将已将已选工程内容添加到工程内容添加到“已已选菜色〞列表框中菜色〞列表框中“删除〞按除〞按钮的的Click事件事件过程代程代码::Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim deleted_index As Integer deleted_index = ListBox2.SelectedIndex ListBox2.Items.RemoveAt(deleted_index)End Sub删除除“已已选菜色〞列表框中菜色〞列表框中选中的工程中的工程“下下单〞按〞按钮的的Click事件事件过程代程代码::Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click MsgBox("您点的菜已下单,请稍候!您点的菜已下单,请稍候!", , "确认确认") ListBox2.Items.Clear()End Sub删除除“已已选菜色〞列表框中一切工程菜色〞列表框中一切工程获得待删除工程的索引号获得待删除工程的索引号拓展思索拓展思索1.假假设用用户没有在左没有在左边列表框列表框选择某个菜色而点某个菜色而点击了了“选择〞按〞按钮,,应如何如何处置?置?2.假假设用用户没有在右没有在右边列表框列表框选择某个菜色而点某个菜色而点击了了“删除〞按除〞按钮,,应如何如何处置?置?3. 提示:利用列表框的提示:利用列表框的SelectedIndex属性和属性和MsgBox函数函数4.假假设希望右希望右边列表框没内容列表框没内容时,,“删除〞按除〞按钮不可用呢不可用呢??5. 提示:利用列表框的提示:利用列表框的Count属性判属性判别6.假假设用用户希望双希望双击“本店菜本店菜单〞列表框中某个工程就完〞列表框中某个工程就完成成“选择〞〞动作呢?作呢?7. 提示:利用列表框的提示:利用列表框的DoubleClick事件事件8.假假设想在运想在运转过程中添加左程中添加左侧列表框中的菜色呢?列表框中的菜色呢?9. Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ListBox1.Items.Add("水煮水煮鱼鱼") : ListBox1.Items.Add("铁铁板牛肉板牛肉") ListBox1.Items.Add("鱼鱼香肉香肉丝丝") : ListBox1.Items.Add("番茄炒蛋番茄炒蛋") ListBox1.Items.Add("油油焖焖大大虾虾") : ListBox1.Items.Add("手撕包菜手撕包菜") ListBox1.Items.Add("青椒土豆青椒土豆丝丝") : ListBox1.Items.Add("海海带带排骨排骨汤汤") ListBox1.Items.Add("紫菜蛋紫菜蛋汤汤") Button2.Enabled = False '将将“删删除〞按除〞按钮设为钮设为无效无效 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If ListBox1.Text = "" Then MsgBox("您未您未选选任何添加工程任何添加工程!") Else ListBox2.Items.Add(ListBox1.Text) End If If ListBox2.Items.Count = 0 Then Button2.Enabled = False Else Button2.Enabled = True End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If ListBox2.SelectedIndex <> -1 Then ListBox2.Items.RemoveAt(ListBox2.SelectedIndex) Else MsgBox("您未选任何删除工程您未选任何删除工程!") End If If ListBox2.Items.Count = 0 Then Button2.Enabled = False Else Button2.Enabled = True End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click ListBox2.Items.Clear() Button2.Enabled = False End Sub Private Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick If ListBox1.Text = "" Then MsgBox("您未选任何添加工程您未选任何添加工程!") Else ListBox2.Items.Add(ListBox1.Text) End If If ListBox2.Items.Count = 0 Then Button2.Enabled = False Else Button2.Enabled = True End If End SubEnd Class组合框控件合框控件——ComboBox功能:显示供选择的工程列表,也可输入新的内容。
功能:显示供选择的工程列表,也可输入新的内容大多数属性、方法和事件与列表框一样大多数属性、方法和事件与列表框一样不同的有:不同的有:DropDownStyle:设置组合框的式样,取值有:设置组合框的式样,取值有Simple:简单组合框:简单组合框DropDown:下拉式组合框:下拉式组合框(默许默许) DropDownList:下拉式列表框:下拉式列表框Text:当前选定的列表框选项或者在文本框中输入的:当前选定的列表框选项或者在文本框中输入的字符串字符串 【例【例题】修正点菜程序,如以下】修正点菜程序,如以下图添加要求:添加要求:将将“本店菜本店菜单〞〞换成如下成如下组合框点点击“添加菜色〞按添加菜色〞按钮可将可将组合框的文本框中合框的文本框中输入的非空字入的非空字符串添加到符串添加到组合框中“添加菜色〞按添加菜色〞按钮的的Click事件事件过程代程代码:: Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Dim add_dish As String add_dish = ComboBox1.Text If ComboBox1.Text <> "" Then ComboBox1.Items.Add(add_dish) ComboBox1.Text = "" Else MsgBox("请先输入要添加的菜名!") ComboBox1.Text = "" End IfEnd Sub判别菜名能否为空判别菜名能否为空获得待添加的菜名获得待添加的菜名拓展思索:假设添加的菜名是原来曾经有的,应如何处置?拓展思索:假设添加的菜名是原来曾经有的,应如何处置?练习作业练习作业练习“点菜程序〞的拓展部分点菜程序〞的拓展部分教材【例教材【例5.4】和【例】和【例5.5】】作作业教材教材实训3〔除要求〔除要求②②〕〕多列列表框控件多列列表框控件——ListView功能:功能:创建建带有列有列标题的多列工程列表的多列工程列表由由ColumnHeader(列列标头)和和ListViewItem(项)两个两个对象象组成成1. 在在ListView控件中添加列控件中添加列标头常用属性常用属性View::设置置ListViewItem对象的象的视图,默以,默以为LargeIconColumns::设置置“详细信息〞信息〞视图中可中可显示的列示的列Add方法:添加列方法:添加列标头RemoveAt方法:方法:删除指定索引号的列除指定索引号的列标头 第第1个列个列标头的索引号的索引号为0,第,第2个个为1,依此,依此类推推Clear方法:移除一切列方法:移除一切列标头【例【例5.6】】设计一个如以下一个如以下图的程序。
要求:的程序要求:单击“添加列添加列标头〞按〞按钮可在可在ListView控件中添加控件中添加3个个列列标头单击“删除列除列标头〞按〞按钮那么那么删除一切列除一切列标头添加前添加前添加后添加后“添加列添加列标头〞按〞按钮的的Click事件事件过程代程代码::Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListView1.View = View.Details ListView1.Columns.Add("标题标题1", 60, HorizontalAlignment.Center) ListView1.Columns.Add("标题标题2", 60, HorizontalAlignment.Center) ListView1.Columns.Add("标题标题3", 60, HorizontalAlignment.Center)End Sub“删除列除列标头〞按〞按钮的的Click事件事件过程代程代码:: Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ListView1.Columns.Clear() End Sub2. 在在ListView中添加子项〔自学〕中添加子项〔自学〕5.4.4 TreeView控件〔自学〕控件〔自学〕修正修正View属性,为后续属性,为后续Add做预备做预备添加列标头添加列标头删除一切列标头删除一切列标头计时器控件器控件——Timer功能:在运用程序中控制定时发惹事件。
功能:在运用程序中控制定时发惹事件常用属性:常用属性:Enabled:设置:设置Timer控件能否起作用,默以为控件能否起作用,默以为FalseInterval:设置定时事件的时间间隔,单位为毫秒假设将:设置定时事件的时间间隔,单位为毫秒假设将Interval属性设置为属性设置为0,那么,那么Timer控件无效控件无效常用事件:常用事件:Tick事件:自动以事件:自动以Interval属性指定的时间间隔发生属性指定的时间间隔发生常用方法:常用方法:Start():启动计时器,相当于:启动计时器,相当于Enabled属性设置为属性设置为TrueStop():停顿计时器,相当于:停顿计时器,相当于Enabled属性设置为属性设置为 False【例【例5.10】】设计一个如以下一个如以下图的程序要求:的程序要求:单击“开开场〞按〞按钮出出现动态变化的化的1~60之之间的随机整数的随机整数单击“停停顿〞按〞按钮那么使数字固定那么使数字固定显示示•Tip:窗体设计中添加的:窗体设计中添加的Timer控件不会显示在控件不会显示在窗体上Timer1的的Tick事件过程代码:事件过程代码:Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim n As Integer Randomize() n = Int(60 * Rnd() + 1) Label1.Text = Format(n, "00")End Sub“开开场〞按〞按钮的的Click事件事件过程代程代码::Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Timer1.Start()End Sub“停停顿〞按〞按钮的的Click事件事件过程代程代码::Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click Timer1.Stop()End Sub定时发生的事件代码要写在定时发生的事件代码要写在Tick事件中事件中获得获得1~60的随机整数的随机整数将随机数按指定格式显示在将随机数按指定格式显示在Label1上上Timer1有效有效Timer1无效无效图片框控件片框控件——PictureBox功能:功能:显示多种格式的示多种格式的图片。
片常用属性:常用属性:Image::设置置图片框中片框中显示的示的图片设置方式有两置方式有两种:种:〔〔1〕〕经过属性窗口属性窗口设置置 〔〔2〕〕经过代代码设置,需运用置,需运用Image类的的FromFile方法,方法,语法格式如下:法格式如下:PictureBox控件名控件名.Image = Image.FromFile(“图片文件途径名〞片文件途径名〞) 如要如要删除除图片,那么用:片,那么用:PictureBox控件名控件名.ImageSizeMode::设置置图片框中片框中显示的示的图片大小,有如下片大小,有如下5个个选项值::Normal、、StrechImage、、AutoSize、、CenterImage、、Zoom【例【例5.11】】设计一个如以下一个如以下图的程序要求:的程序要求:窗体装入窗体装入时加加载图片文件片文件leaf.gif单击“图片上升〞按片上升〞按钮可使可使图片片渐渐上升上升单击“停停顿上升〞按上升〞按钮可使可使图片停片停顿上升上升单击“图片复原〞按片复原〞按钮可使可使图片恢复到原始位置片恢复到原始位置上升前上升前上升后上升后Form1的的Load事件过程代码:事件过程代码:Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load PictureBox1.Image = Image.FromFile("c:\leaf.gif") PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize ptop = PictureBox1.TopEnd Sub在窗体的在窗体的“声明〞段声明模声明〞段声明模块级变量量ptop,用于保管,用于保管图片原始位置片原始位置加载图片加载图片设置图片大小设置图片大小获得图片原始获得图片原始top值值Timer1的的Tick事件过程代码:事件过程代码: Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick PictureBox1.Top = PictureBox1.Top - 5 End Sub每隔一定时间图片的每隔一定时间图片的top值减值减5,,即上升效果即上升效果“图片上升〞按片上升〞按钮的的Click事件事件过程代程代码::Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Timer1.Start()End Sub“停停顿上升〞按上升〞按钮的的Click事件事件过程代程代码::Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Timer1.Stop()End Sub“图片复原〞按片复原〞按钮的的Click事件事件过程代程代码:: Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Timer1.Stop() PictureBox1.Top = ptop End Sub将图片原始将图片原始top值再赋给图片值再赋给图片拓展思索:假设希望图片上升到拓展思索:假设希望图片上升到Form1的上边缘自动停顿呢?的上边缘自动停顿呢?选项卡控件卡控件——TabControl功能:创建多页窗体。
功能:创建多页窗体常用属性:常用属性:TabPages:是各选项卡的集合:是各选项卡的集合 每个单独的选项卡是一个每个单独的选项卡是一个TabPage对象对象 单击选项卡,相应的单击选项卡,相应的TabPage对象触发对象触发Click事件事件【例【例5.12】】设计一个如以下一个如以下图的程序要求:的程序要求:窗体上有窗体上有2个个选项卡,分卡,分别用于用于输入入单位信息和个人信位信息和个人信息息单击“确定〞按确定〞按钮后可在即后可在即时窗口中窗口中输出用出用户在在2个个选项卡中卡中输入的信息入的信息单位信息单位信息个人信息个人信息留意:在设置留意:在设置TabControl控件各选项卡的控件各选项卡的Text属性时,应选属性时,应选定整个控件,否那么就没有定整个控件,否那么就没有TabPages属性确定〞按确定〞按钮的的Click事件事件过程代程代码::Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Debug.WriteLine("单位称号:单位称号:" & TextBox1.Text) Debug.WriteLine("单位地址:单位地址:" & TextBox2.Text) Debug.WriteLine("单位:单位:" & TextBox3.Text) Debug.WriteLine("姓名:姓名:" & TextBox4.Text) Debug.WriteLine("住址:住址:" & TextBox5.Text) Debug.WriteLine("::" & TextBox6.Text)End Sub利用利用WriteLine将各文本框的内将各文本框的内容输出容输出练练 习习1.教材【例教材【例5.10】、】、 【例【例5.11 】】 、、 【例【例5.12】】2.完成【例完成【例5.11 】】 的拓展思索部分的拓展思索部分3.设计一个一个“仿仿电子表〞程序,可子表〞程序,可显示示变化的当前化的当前时间,如以下,如以下图。
鼠标和键盘事件鼠标和键盘事件Windows环境下环境下2种最主要的外部事件驱动种最主要的外部事件驱动方式方式很多控件都可以呼应鼠标或键盘事件很多控件都可以呼应鼠标或键盘事件VB.NET有多种鼠标和键盘事件有多种鼠标和键盘事件鼠标事件鼠标事件由鼠标动作引起的由鼠标动作引起的除了除了Click和和DoubleClick外,还有:外,还有:MouseDown:在对象上按下鼠标键时触发:在对象上按下鼠标键时触发MouseUp:在对象上释放鼠标键时触发:在对象上释放鼠标键时触发MouseMove:在对象上挪动鼠标时触发:在对象上挪动鼠标时触发MouseHover:鼠标停留在对象上时触发:鼠标停留在对象上时触发MouseLeave:鼠标分开对象时触发:鼠标分开对象时触发鼠标事件鼠标事件MouseDown、、MouseUp、、MouseMove事件过事件过程构造分别为〔假设在程构造分别为〔假设在Form1上触发〕:上触发〕:Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDownEnd SubPrivate Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUpEnd SubPrivate Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMoveEnd Sub鼠标事件鼠标事件其中参数其中参数e有以下常用属性:有以下常用属性:Button:阐明所按的是哪个鼠标键:阐明所按的是哪个鼠标键Clicks:获取单击鼠标键的次数:获取单击鼠标键的次数Location:获取发生鼠标事件时的鼠标位置:获取发生鼠标事件时的鼠标位置X,,Y:获取发生鼠标事件时的鼠标:获取发生鼠标事件时的鼠标X坐标或坐标或Y坐标坐标XY0鼠标事件鼠标事件MouseHover、、MouseLeave事件过程构造分别事件过程构造分别为〔假设在为〔假设在Form1上触发〕:上触发〕: Private Sub Form1_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseHover End SubPrivate Sub Form1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseLeaveEnd Sub这这2个事件的个事件的e参数没有上面提到的几个属性。
参数没有上面提到的几个属性【例【例5.13】设计一个如以下图的程序要求:】设计一个如以下图的程序要求:在窗体上按住鼠标左键挪动鼠标时,图片可以跟随鼠在窗体上按住鼠标左键挪动鼠标时,图片可以跟随鼠标挪动标挪动Label中同时显示当前鼠标的中同时显示当前鼠标的X,,Y坐标坐标Form1的的MouseMove事件过程代码:事件过程代码:Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove If e.Button = Windows.Forms.MouseButtons.Left Then PictureBox1.Location = e.Location Label1.Text = "X=" & e.X Label2.Text = "Y=" & e.Y End IfEnd Sub图片可在界面设计阶段就添加完成图片可在界面设计阶段就添加完成判别能否按下鼠标判别能否按下鼠标左键左键挪动图片挪动图片获得获得X,,Y坐标坐标思索:假设把代码写在思索:假设把代码写在PictureBox1的的MouseMove事件里呢?事件里呢?留意:留意:e.Location、、e.X和和e.Y是相对于控件而言的。
是相对于控件而言的【简单绘图实例】设计一个如以下图的程序要求:【简单绘图实例】设计一个如以下图的程序要求:在在PictureBox上按住鼠标左键拖动,当松开鼠标时绘上按住鼠标左键拖动,当松开鼠标时绘制一条直线段制一条直线段•注:此处涉及到注:此处涉及到GDI+多媒体编程的相关知识如感多媒体编程的相关知识如感兴趣,可参阅相关资料兴趣,可参阅相关资料声明两个模块级变量,用来存放起点和终点坐标代码为:声明两个模块级变量,用来存放起点和终点坐标代码为:Dim p1, p2 As PointPictureBox1的的MouseDown事件代码:事件代码:p1.X = e.Xp1.Y = e.Y 获得鼠标按下的位置,并赋值给获得鼠标按下的位置,并赋值给p1PictureBox1的的MouseUp事件代码:事件代码:Dim g As Graphics ‘声明一个声明一个Graphics对对象象g = PictureBox1.CreateGraphics Dim mypen As Pen = New Pen(Color.FromArgb(23, 47, 89), 10) ’定定义义画笔画笔p2.X = e.X ‘得到得到终终点的点的x坐坐标标p2.Y = e.Y ‘得到得到终终点的点的y坐坐标标g.DrawLine(mypen, p1, p2) ‘绘绘制直制直线线键盘事件键盘事件由按键动作触发由按键动作触发窗体和接纳键盘输入的控件可呼应:窗体和接纳键盘输入的控件可呼应:KeyPress:按一下键并释放:按一下键并释放KeyDown:按下键:按下键KeyUp:释放键:释放键键盘事件键盘事件KeyPress事件过程构造为事件过程构造为(假设在假设在Form1上上触发触发):Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPressEnd Sub其中,参数其中,参数e有以下有以下2个常用属性:个常用属性: KeyChar:获取或设置与按下的键对应的字符:获取或设置与按下的键对应的字符 Handled:获取能否处置过当前的按键输入。
假设设置为:获取能否处置过当前的按键输入假设设置为True,表示当前的按键输入曾经处置,表示当前的按键输入曾经处置键盘事件键盘事件KeyDown和和KeyUp事件过程构造分别为事件过程构造分别为(假设在假设在Form1上触发上触发):Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDownEnd Sub其中,参数其中,参数e有以下有以下2个常用属性:个常用属性: Alt、、Control、、Shift:前往值为:前往值为True或或False,阐明能否按下,阐明能否按下Alt键、键、Ctrl键或键或Shift键键 KeyCode:获取所按键的键值或键名:获取所按键的键值或键名Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUpEnd Sub【例【例5.14】设计一个如图的〞模拟打字机〞程序。
要】设计一个如图的〞模拟打字机〞程序要求:求:在文本框中进展输入在文本框中进展输入按回车键后,输入的内容出如今上面的列表框中按回车键后,输入的内容出如今上面的列表框中按按Ctrl+C可封锁窗体可封锁窗体TextBox1的的KeyDown事件过程代码:事件过程代码:Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown If e.KeyCode = Keys.Enter Then ListBox1.Items.Add(TextBox1.Text) End IfEnd Sub判别能否按下了回车键判别能否按下了回车键拓展思索:拓展思索:假设希望文本参与列表框后,文本内容自动清空同时假设希望文本参与列表框后,文本内容自动清空同时文本框获得焦点呢?文本框获得焦点呢?可以写在可以写在KeyUp事件里吗?事件里吗?可以写在可以写在KeyPress事件里吗?事件里吗?Form1的的KeyDown事件过程代码:事件过程代码:Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.C And e.Control = True Then Me.Close() End IfEnd Sub判别能否同时按下了判别能否同时按下了Ctrl和和C键键运转后发现不起作用,缘由是文本框先于窗体接纳了该事件。
运转后发现不起作用,缘由是文本框先于窗体接纳了该事件Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.KeyPreview = TrueEnd Sub窗体在系统将键盘事件传送到具有窗体在系统将键盘事件传送到具有焦点的其他控件前接纳该事件焦点的其他控件前接纳该事件需求在需求在Form1的的Load事件中参与:事件中参与:练习作业练习作业练习:课本【例练习:课本【例5.13】、【例】、【例5.14】】作业:完成教材实训作业:完成教材实训3、实训、实训5小小 结结窗体或控件的大部分属性既可以窗体或控件的大部分属性既可以经过属性窗口属性窗口设置,置,也可以运也可以运转时由代由代码来来设置但有的属性只能在置但有的属性只能在设计阶段段经过属性窗口属性窗口进展修正,而有的属性只能在展修正,而有的属性只能在代代码中援用假假设不知道需添加的控件在工具箱的哪个不知道需添加的控件在工具箱的哪个选项卡下卡下面,可直接展开包含一切控件的面,可直接展开包含一切控件的“一切一切Windows窗体窗体〞,其中的控件按字母〞,其中的控件按字母顺序序陈列,便于列,便于查找。
找Name属性是窗体和每个控件都必需具有的,是控件属性是窗体和每个控件都必需具有的,是控件的称号在程序运的称号在程序运转中只能被援用,而不能被修正中只能被援用,而不能被修正小小 结结Label、、TextBox和和Button控件运用率最高控件运用率最高Label用来显示固定的阐明文字,用来显示固定的阐明文字,TextBox可用于输入或可用于输入或输出数据,输出数据,Button主要用于呼应主要用于呼应Click事件RadioButton和和CheckBox用于单项和多项选择用于单项和多项选择GroupBox用于对窗体上的控件进展分类整理用于对窗体上的控件进展分类整理在具有工程列表功能的控件中,在具有工程列表功能的控件中,ListBox最简单,最简单,ComboBox具有文本框和列表框的功能,具有文本框和列表框的功能,ListView可创建带有列标题的多列工程列表;而可创建带有列标题的多列工程列表;而TreeView可可用来显示有层次构造的数据用来显示有层次构造的数据小小 结结Timer是运用程序中控制定时发惹事件的控件,是运用程序中控制定时发惹事件的控件,PictureBox可显示多种格式的图片,可显示多种格式的图片,TabControl可经过创建多页窗体对控件进展分组。
可经过创建多页窗体对控件进展分组3个根本的鼠标事件是个根本的鼠标事件是MouseDown(按下鼠标键按下鼠标键时触发时触发)、、MouseUp(释放鼠标键时触发释放鼠标键时触发)和和MouseMove(挪动鼠标时触发挪动鼠标时触发)3个根本的键盘事件是个根本的键盘事件是KeyPress(按键触发按键触发)、、KeyDown(按下键触发按下键触发)和和KeyUp(释放键触发释放键触发)。
