《第4章-菜单、工具栏与状态栏ppt课件.ppt》由会员分享,可在线阅读,更多相关《第4章-菜单、工具栏与状态栏ppt课件.ppt(108页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件技术软件技术专业剖析报告专业剖析报告 软件教研室软件教研室 李李 萍萍2006年年5月月 -C#第第4 4章章 菜单、工具栏、状态栏与对话框菜单、工具栏、状态栏与对话框讲课教师:周志德讲课教师:周志德 Windows风格的界面由菜单、工具栏、状态栏等组成,风格的界面由菜单、工具栏、状态栏等组成,如学生档案管理系统的主界面。如学生档案管理系统的主界面。图图4.1 学生档案管理系统主菜单界面学生档案管理系统主菜单界面1. 教学内容教学内容(1)菜单设计:下拉菜单设计与弹出式菜单设计)菜单设计:下拉菜单设计与弹出式菜单设计(2)工具栏设计)工具栏设计(3)状态栏设计)状态栏设计(4)对话框使用)
2、对话框使用(5)单文档编辑器设计与)单文档编辑器设计与MDI多窗体程序设计多窗体程序设计图图4.2 单文档编辑器设计示例单文档编辑器设计示例2. 教学方法(项目式教学法)教学方法(项目式教学法)(1)以单文档编辑器设计为教学案例介绍菜单、工具栏、)以单文档编辑器设计为教学案例介绍菜单、工具栏、状态栏与对话框的设计与使用方法。状态栏与对话框的设计与使用方法。(2)以学生档案管理系统主界面设计为教学案例介绍)以学生档案管理系统主界面设计为教学案例介绍MDI多窗体程序设计方法。多窗体程序设计方法。 【引【引例例】 设计一个简易文本编辑器的下拉式菜单,如图设计一个简易文本编辑器的下拉式菜单,如图4.1
3、所示,设计要求如表所示,设计要求如表4.1所示。所示。表表4.1 简易文本编辑器的下拉式菜单结构简易文本编辑器的下拉式菜单结构文件(文件(&F)编辑编辑(&E)视图视图(&V)新建新建 Ctrl+N剪切剪切 Ctrl+X页面页面打开打开 Ctrl+O复制复制 Ctrl+C大纲大纲保存保存 Ctrl+S粘贴粘贴 Ctrl+V文档结构文档结构打印打印 Ctrl+P工具工具 常用常用预览预览 Ctrl+V格式格式表格表格退出退出 Ctrl+E4.1 菜单设计菜单设计4.1 菜单设计菜单设计图图4.3 下拉式菜单的组成下拉式菜单的组成二级子二级子菜单菜单菜单项菜单项子菜单子菜单标题标题子菜单子菜单提示
4、符提示符主菜单项主菜单项分隔条分隔条主菜单主菜单一级子菜单一级子菜单热键热键(Alt+V)快捷键快捷键(Ctrl+S)菜单分为下拉式菜单与弹出式菜单菜单分为下拉式菜单与弹出式菜单4.1.1下拉式菜单设计下拉式菜单设计1.菜单组成菜单组成 主菜单:主菜单项主菜单:主菜单项1、主菜单项、主菜单项2、主菜单项、主菜单项n下拉式菜单下拉式菜单 一级子菜单一级子菜单 菜单项:表示一条命令或子菜单标题菜单项:表示一条命令或子菜单标题 二级子菜单二级子菜单 快捷键快捷键(Ctrl+字母)字母):直接执行的命令键:直接执行的命令键 子菜单子菜单 三级子菜单三级子菜单 分隔条分隔条(-):区分不同功能的菜单项组
5、:区分不同功能的菜单项组 四级子菜单四级子菜单 子菜单提示符:表示有下级子菜单子菜单提示符:表示有下级子菜单 五级子菜单五级子菜单 热键:热键:“&”用菜单控件用菜单控件menuStripmenuStrip设计下拉式菜单设计下拉式菜单。4.1 菜单设计菜单设计2.菜单控件菜单控件menuStrip(1)作用)作用:编辑制作下拉式菜单:编辑制作下拉式菜单(2)添加菜单控件)添加菜单控件工具箱工具箱 | 菜单与工具栏菜单与工具栏| 将将menuStrip控件拖放到窗体内。控件拖放到窗体内。(3)设置菜单位置)设置菜单位置(Dock属性属性)用用Dock属性设置菜单属性设置菜单6种位置:种位置:To
6、p(顶部)、(顶部)、Bottom(底部)、(底部)、Left(左边)、(左边)、Right(右边)、(右边)、Fill(填满)和(填满)和None(不设置)。(不设置)。 4.1.1 下拉式菜单设计下拉式菜单设计 (4)选择菜单类型)选择菜单类型 在新添加菜单项前,应选择菜单项在新添加菜单项前,应选择菜单项类型。单击类型。单击“请在此处键入请在此处键入”右侧的下右侧的下拉按钮,打开设置菜单项类型的下拉框,拉按钮,打开设置菜单项类型的下拉框,如图如图4.4所示。有三种类型:所示。有三种类型:MenuItem(菜单项)(菜单项)ComboBox(下拉框)(下拉框)TextBox(文本框)(文本框
7、)选择选择MenuItem(菜单项)(菜单项)4.1.1 下拉式菜单设计下拉式菜单设计图图4.4 选择菜单项类型选择菜单项类型 (5)输入菜单项文本)输入菜单项文本(Text属性属性) 单击单击“请在此处键入请在此处键入”框体,输入框体,输入菜单项文本,如输入菜单项文本,如输入“文件文件”,如图,如图4.5所示。也可用菜单项的所示。也可用菜单项的Text属性输属性输入菜单项文本。入菜单项文本。 (6)输入分隔条)输入分隔条 单击单击“请在此处键入请在此处键入”下拉按钮,选下拉按钮,选择择Separator,可输入分隔条。如图可输入分隔条。如图4.6所所示。示。4.1.1 下拉式菜单设计下拉式菜
8、单设计图图4.5 输入菜单项文本输入菜单项文本图图4.6 输入分隔条输入分隔条(7)设置热键()设置热键( Text属性)属性)Text属性:菜单项文本属性:菜单项文本&在菜单项的在菜单项的Text属性中输入:属性中输入:菜单项文本菜单项文本&,可,可设置热键。设置热键。如在如在“文件文件”菜单项的菜单项的Text属性中输入属性中输入“文件文件(&F)”,则设置则设置“文件文件”菜单项热键为菜单项热键为F。程序执行时按程序执行时按Alt+F组合键可执行组合键可执行“文件文件”主菜单项命主菜单项命令。令。4.1.1 下拉式菜单设计下拉式菜单设计(8)设置快捷键()设置快捷键( ShortcutK
9、eys属性属性)用用ShortcutKeys属性可设置子菜单属性可设置子菜单的快捷键。方法如下:的快捷键。方法如下:单击子菜单(如单击子菜单(如 “新建新建” ),在),在属性对话框中单击属性对话框中单击ShortcutKeys下拉下拉按钮,选择按钮,选择Ctrl+N为快捷键,如图为快捷键,如图4.7所示,则所示,则Ctrl+N成为成为“新建新建”子菜单子菜单的快捷键,当按的快捷键,当按Ctrl+N组合键时,系组合键时,系统将执行统将执行“新建新建”子菜单命令。子菜单命令。4.1.1 下拉式菜单设计下拉式菜单设计图图4.7设置快捷键设置快捷键(9)设置菜单项名称)设置菜单项名称Name先选择菜
10、单项,然后在属性对话框中设置先选择菜单项,然后在属性对话框中设置Name属性。属性。如设置文件菜单项的如设置文件菜单项的Name:menu_File (10)设置菜单事件)设置菜单事件 双击子菜单项(双击子菜单项( 如,新建如,新建 ),添加菜单的),添加菜单的Click(单击)事(单击)事件,如下所示。件,如下所示。 private void menu_New_Click(object sender, EventArgs e) MessageBox.Show(新建文件!新建文件!); 当用户点击当用户点击“新建新建”菜单时将弹出菜单时将弹出“新建文件!新建文件!”对话框。对话框。4.1.1
11、下拉式菜单设计下拉式菜单设计(11)删除菜单项)删除菜单项右击菜单项右击菜单项 | 删除删除 ,可删除菜单项。,可删除菜单项。(12)插入菜单项)插入菜单项右击菜单项右击菜单项 | 插入,可插入新的菜单项。插入,可插入新的菜单项。(13)设置菜单项图标)设置菜单项图标右击菜单项右击菜单项 | 设置图像设置图像 |本地资源本地资源 | 导入导入 | 选择图片文件,选择图片文件,可设置菜单项图标。可设置菜单项图标。4.1.1 下拉式菜单设计下拉式菜单设计(14)设置菜单项有效()设置菜单项有效(Enabled)属性)属性Enabled =true 菜单项有效,菜单项有效,Enabled=false
12、 菜单项无效菜单项无效(15)设置菜单项复选框()设置菜单项复选框(Checked)属性)属性Checked=true 菜单项的复选框被选中,则该菜单项左菜单项的复选框被选中,则该菜单项左边加上检查标记边加上检查标记“”,表示该菜单项是一个被选项。,表示该菜单项是一个被选项。4.1.1 下拉式菜单设计下拉式菜单设计(16)项集合编辑器)项集合编辑器作用作用:添加、修改和删除菜单项。:添加、修改和删除菜单项。启动启动: 单击菜单控件单击菜单控件Items属性右边省略按钮。属性右边省略按钮。 项集合编辑器界面项集合编辑器界面(如图如图4.8所示)所示)l左侧上方下拉列表框可选择要添加菜单项的类型,
13、左侧上方下拉列表框可选择要添加菜单项的类型,l左侧下方是已经添加的菜单项列表,左侧下方是已经添加的菜单项列表,l右侧是选中菜单项的属性列表。右侧是选中菜单项的属性列表。4.1.1 下拉式菜单设计下拉式菜单设计图图4.8 项集合编辑器界面项集合编辑器界面4.1.1 下拉式菜单设计下拉式菜单设计添加新菜单项添加新菜单项单击单击“添加添加”按钮可以添加新菜单项。按钮可以添加新菜单项。删除菜单项删除菜单项单击删除按钮可删除当前菜单项单击删除按钮可删除当前菜单项调整菜单项的位置调整菜单项的位置选中菜单项后,单击列表右侧的上下箭头按钮,可调整选中菜单项后,单击列表右侧的上下箭头按钮,可调整菜单项之间的位置
14、。菜单项之间的位置。4.1.1 下拉式菜单设计下拉式菜单设计修改菜单项属性修改菜单项属性在右侧属性列表中可修改菜单项的属性。在右侧属性列表中可修改菜单项的属性。如修改如修改Name、Text、ShortcutKeys等属性。等属性。单击菜单项的单击菜单项的DropDownItems属性右边的省略按钮,将显属性右边的省略按钮,将显示其对应下一级子菜单项的成员。示其对应下一级子菜单项的成员。如,单击如,单击“Menu_File”菜单项菜单项(文件文件)的的DropDownItems属属性右边的省略按钮,将显示文件菜单对应下一级子菜单项的性右边的省略按钮,将显示文件菜单对应下一级子菜单项的成员。如图
15、成员。如图4.9所示。此时可编辑文件子菜项的属性。所示。此时可编辑文件子菜项的属性。图图4.9 文件菜单的子菜单成员文件菜单的子菜单成员【例例4.1】 设计一个简易文本编辑器的下拉式菜单,如设计一个简易文本编辑器的下拉式菜单,如图图4.1所示,设计要求如表所示,设计要求如表4.1所示。所示。文件(文件(&F)(File)编辑编辑(&E)(Edit)视图视图(&V)(View)新建新建(New) Ctrl+N剪切剪切 (Cut) Ctrl+X页面页面(Page)打开打开(Open) Ctrl+O复制复制 (Copy)Ctrl+C大纲大纲(Outline)保存保存(Save) Ctrl+S粘贴粘贴
16、(Paste)Ctrl+V文档文档(Word)打印打印 (Print) Ctrl+P工具工具(Tools)常用常用(use)预览预览(Review) Ctrl+R格式格式(Format)表格表格(Table)退出退出 (Exit) Ctrl+E4.1.1 下拉式菜单设计下拉式菜单设计(1)新建解决方案)新建解决方案ex4_1.sln 存放在存放在d:C#ex4_1目录中。目录中。(2)新建项目)新建项目ex4_1与窗体与窗体新建一个项目新建一个项目ex4_1,设置窗体属性设置窗体属性Text:下拉式菜单设计示例下拉式菜单设计示例Name:frm_Menu(3)添加菜单控件)添加菜单控件工具箱工
17、具箱 | 菜单与工具栏菜单与工具栏 | 将将menuStrip添加到窗体中。添加到窗体中。4.1.1 下拉式菜单设计下拉式菜单设计(4)使用)使用menuStrip控件建立菜单控件建立菜单 创建主菜单项创建主菜单项Text:输入:输入“文件(文件(&F)”(F键成为热键)键成为热键)Name:Menu_File 创建子菜单项创建子菜单项Text: 新建新建Name :Menu_NewShortcutKeys:选择:选择Ctrl+N4.1.1 下拉式菜单设计下拉式菜单设计4.1.1 下拉式菜单设计下拉式菜单设计用同样方法建立编辑与视图菜单项及其子菜单。用同样方法建立编辑与视图菜单项及其子菜单。注
18、意:菜单项的注意:菜单项的Name=Menu+菜单英文名。菜单英文名。(5)建立菜单项事件过程)建立菜单项事件过程为了使读者能感受到菜单项命令的执行效果,对为了使读者能感受到菜单项命令的执行效果,对“新新建建”、“打开打开”、“保存保存”与与“退出退出”4个菜单项编写事个菜单项编写事件过程。件过程。编写编写“新建新建”菜单项的事件过程菜单项的事件过程在窗体设计器中,双击在窗体设计器中,双击“新建新建”菜单项,进入代码编辑器,菜单项,进入代码编辑器,输入如下代码:输入如下代码: private void Menu_New_Click(object sender, EventArgs e) Mes
19、sageBox.Show(新建文件!新建文件!); 4.1.1 下拉式菜单设计下拉式菜单设计编写编写“打开打开”菜单项的事件过程菜单项的事件过程 private void Menu_Open_Click(object sender, EventArgs e) MessageBox.Show(打开文件!打开文件!); 编写编写“保存保存”菜单项的事件过程菜单项的事件过程private void Menu_Save_Click(object sender, EventArgs e) MessageBox.Show(保存文件!保存文件!); 4.1.1 下拉式菜单设计下拉式菜单设计编写编写“退出退出
20、”菜单项的事件过程菜单项的事件过程 private void Menu_Exit_Click(object sender, EventArgs e) this.Close(); 4.1.1 下拉式菜单设计下拉式菜单设计(7)编译和运行程序)编译和运行程序执行菜单命令:调试执行菜单命令:调试 | 启动调试或按启动调试或按F5 或或 按启动快速按按启动快速按钮,即可启动执行菜单程序。用鼠标单击菜单项,屏幕上钮,即可启动执行菜单程序。用鼠标单击菜单项,屏幕上将显示对应输出信息。用热键将显示对应输出信息。用热键Alt+F,可启动文件一级子菜,可启动文件一级子菜单,用快捷键单,用快捷键Ctrl+O可执行
21、可执行“打开打开”菜单项命令,屏幕显菜单项命令,屏幕显示示“打开文件打开文件”信息,用快捷键信息,用快捷键Ctrl+E可执行可执行“退出退出”菜菜单项命令,系统将关闭程序。单项命令,系统将关闭程序。4.1.1 下拉式菜单设计下拉式菜单设计4.1.2 弹出式菜单设计弹出式菜单设计(ContextMenuStrip控件控件)在在Windows程序设计中广泛采用弹出式菜单,如在程序设计中广泛采用弹出式菜单,如在Word菜单或工具栏区单击鼠标右键,出现有关菜单栏、工具栏菜单或工具栏区单击鼠标右键,出现有关菜单栏、工具栏等弹出式选择菜单。等弹出式选择菜单。在文本编辑区单击鼠标右键会出现有关文本编辑方面的
22、在文本编辑区单击鼠标右键会出现有关文本编辑方面的弹出式菜单。弹出式菜单。在在C#开发环境中,开发环境中,用用ContextMenuStripContextMenuStrip控件设计弹出式控件设计弹出式菜单。菜单。4.1.2 弹出式菜单设计弹出式菜单设计1.作用作用:设计弹出式菜单:设计弹出式菜单2.位置位置:工具箱:工具箱 | 菜单和工具栏菜单和工具栏3. 选择菜单类型选择菜单类型MenuItem(菜单项)(菜单项)ComboBox(下拉框)(下拉框)TextBox(文本框)(文本框)选择选择MenuItem(菜单项)(菜单项)4.1.2 弹出式菜单设计弹出式菜单设计4. 输入菜单项文本输入菜
23、单项文本(Text属性属性) 单击单击“请在此处键入请在此处键入”框体,输入菜单项文本,如输入框体,输入菜单项文本,如输入“剪切剪切”,也可用菜单项的,也可用菜单项的Text属性输入菜单项文本。属性输入菜单项文本。5、选择关联控件、选择关联控件编辑控件(如编辑控件(如richTextBox)均有均有ContextMenuStrip属性,属性,在在ContextMenuStrip属性栏中选择属性栏中选择ContextMenuStrip控件,控件,则右击编辑控件时,会出现则右击编辑控件时,会出现ContextMenuStrip控件制作的控件制作的弹出式菜单。弹出式菜单。4.1.2 弹出式菜单设计弹
24、出式菜单设计【例【例4.2】设计一个带有下拉式菜单、弹出式菜单的文本编辑】设计一个带有下拉式菜单、弹出式菜单的文本编辑器,其工作界面如图器,其工作界面如图4.10所示。设计要求如下。所示。设计要求如下。在例在例4.1的窗体中添加一个的窗体中添加一个RichTextBox控件作为图文编辑器,控件作为图文编辑器,用弹出式菜单实现文本编辑器的用弹出式菜单实现文本编辑器的“复制、剪切、粘贴、清除复制、剪切、粘贴、清除”功能,程序设计过程如下。图功能,程序设计过程如下。图4.3弹出式菜单示例弹出式菜单示例4.1.2 弹出式菜单设计弹出式菜单设计图图4.10弹出式菜单示例弹出式菜单示例(1)新建解决方案)
25、新建解决方案ex4_2.sln。(2)设置窗体属性)设置窗体属性Name:frm_ContextMenu。Text:“下拉式菜单与弹出式菜单设计示例下拉式菜单与弹出式菜单设计示例”。(3)将解决方案)将解决方案ex4_1.sln中的下拉菜单控件中的下拉菜单控件menuStrip1复制到复制到frm_ContextMenu窗体中。窗体中。(4)将)将ex4_1.sln中的所有事件处理程序复制到中的所有事件处理程序复制到frm_ContextMenu窗体中。窗体中。4.1.2 弹出式菜单设计弹出式菜单设计(5)在窗体中添加)在窗体中添加ContextMenuStrip1控件控件在弹出式菜单中添加四
26、个子菜单项:在弹出式菜单中添加四个子菜单项:Text:剪切、复制、粘贴、清除。剪切、复制、粘贴、清除。Name:cm_Cut、cm_Copy、cm_Paste、cm_Clear(6)添加)添加RichTextBox控件控件工具箱工具箱 | 公共控件公共控件 | 将将RichTextBox添加到窗体。添加到窗体。设置属性设置属性Name:rtxt_Text。ContextMenuStrip: ContextMenuStrip1 RichTextBox是一种图文编辑控件,具有类似于是一种图文编辑控件,具有类似于Word的文字编辑的文字编辑功能。功能。4.1.2 弹出式菜单设计弹出式菜单设计(7)
27、编写剪切事件处理过程编写剪切事件处理过程 private void Cut() /将剪切内容存入剪切板中,清除剪切内容将剪切内容存入剪切板中,清除剪切内容 Clipboard.SetDataObject(rtxt_Text.SelectedText); rtxt_Text.SelectedText = String.Empty; private void cm_Cut_Click(object sender, EventArgs e) Cut(); /单击弹出式菜单的剪切子菜单时调用单击弹出式菜单的剪切子菜单时调用Cut函数函数 private void Menu_Cut_Click(obje
28、ct sender, EventArgs e) Cut(); /单击下拉菜单的剪切子菜单时调用单击下拉菜单的剪切子菜单时调用Cut函数函数 4.1.2 弹出式菜单设计弹出式菜单设计(8) 编写复制事件处理过程编写复制事件处理过程 private void Copy() /将选择的文本置于系统剪贴板将选择的文本置于系统剪贴板中中 Clipboard.SetDataObject(rtxt_Text.SelectedText); private void cm_Copy_Click(object sender, EventArgs e) Copy(); /单击弹出式菜单的复制子菜单时调用单击弹出式菜
29、单的复制子菜单时调用Copy函数函数 private void Menu_Copy_Click(object sender, EventArgs e) Copy(); /单击下拉菜单的复制子菜单时调用单击下拉菜单的复制子菜单时调用Copy函数函数 4.1.2 弹出式菜单设计弹出式菜单设计(9) 编写粘贴事件处理过程编写粘贴事件处理过程 private void Paste() /将剪切板中内容粘贴到编辑框中将剪切板中内容粘贴到编辑框中 IDataObject iData = Clipboard.GetDataObject(); if (iData.GetDataPresent(DataForm
30、ats.Text) rtxt_Text.SelectedText = (String)iData.GetData(DataFormats.Text); private void cm_Paste_Click(object sender, EventArgs e) Paste(); /单击弹出式菜单的粘贴子菜单时调用单击弹出式菜单的粘贴子菜单时调用Paste函数函数 private void Menu_Paste_Click(object sender, EventArgs e) Paste(); /单击下拉菜单的粘贴子菜单时调用单击下拉菜单的粘贴子菜单时调用Paste函数函数 4.1.2 弹出
31、式菜单设计弹出式菜单设计(10) 编写清除事件处理过程编写清除事件处理过程 private void cm_Clear_Click(object sender, EventArgs e) rtxt_Text.Text = String.Empty;/清除图文编辑框内清除图文编辑框内 4.1.2 弹出式菜单设计弹出式菜单设计(11)运行程序)运行程序 运行程序后,用鼠标右击运行程序后,用鼠标右击RichTextBox1控件,则出现控件,则出现弹出式菜单,可进行文本的剪切、复制、粘贴与清除操作。弹出式菜单,可进行文本的剪切、复制、粘贴与清除操作。 也可用下拉式菜单中的剪切、复制、粘贴子菜单实现也可
32、用下拉式菜单中的剪切、复制、粘贴子菜单实现上述操作。上述操作。4.1.2 弹出式菜单设计弹出式菜单设计C#使用使用ToolStrip控件设计工具栏,下面介绍控件设计工具栏,下面介绍ToolStrip控控件的作用、位置、属性与使用方法。件的作用、位置、属性与使用方法。1.作用作用用于设计工具栏。用于设计工具栏。2.添加工具栏添加工具栏工具箱工具箱 | 菜单与工具栏菜单与工具栏 | ToolStrip控件。控件。3. 工具栏位置(工具栏位置(Dock属性)属性)用用Dock属性:属性:Top、Left、Right、Bottom、None可设置工具栏在窗体中的位置。可设置工具栏在窗体中的位置。4.2
33、4.2工具栏设计工具栏设计4. 添加按钮添加按钮(1)按钮类型:有)按钮类型:有8种按钮类型,如图种按钮类型,如图4.11所示。所示。Button(工具栏按钮)(工具栏按钮)Label(工具栏标签)(工具栏标签)SplitButton (分割按钮)(分割按钮)DropDownButton(工具栏菜单按钮)(工具栏菜单按钮)Separator(工具栏分割线)(工具栏分割线)ComboBox(工具栏下拉框)(工具栏下拉框)TextBox(工具栏文本框)(工具栏文本框)ProgressBar(工具栏进度条)(工具栏进度条) 4.24.2工具栏设计工具栏设计图图4.11 工具栏的工具栏的8种按钮种按钮
34、4.24.2工具栏设计工具栏设计(2)添加按钮)添加按钮单击单击ToolStrip控件的下拉按钮(如图控件的下拉按钮(如图4.11),出现选择),出现选择8种按钮类型菜单,从中选择所需按钮类型,如单击种按钮类型菜单,从中选择所需按钮类型,如单击Button则工具栏中新增一个工具栏按钮,单击则工具栏中新增一个工具栏按钮,单击ComboBox则新增则新增一个下拉组合框按钮。一个下拉组合框按钮。5. 删除按钮删除按钮右击按钮右击按钮 | 选择删除选择删除4.24.2工具栏设计工具栏设计6. 按钮属性按钮属性(1)Name(tbtn):按钮名称按钮名称(2)Text:按钮文本:按钮文本(3)Image
35、:按钮图标:按钮图标(4)DisplayStype:共有共有4种显示类型种显示类型None:不显示不显示Text:显示按钮文本:显示按钮文本Image:显示按钮图标:显示按钮图标ImageandText:显示按钮文本与图标:显示按钮文本与图标4.24.2工具栏设计工具栏设计【例【例4.3】设计一个带有下拉式菜单、弹出式菜单与工具栏的】设计一个带有下拉式菜单、弹出式菜单与工具栏的文本编辑器,其工作界面如图文本编辑器,其工作界面如图4.8所示。所示。设计要求如下设计要求如下:在例在例4.2的工程中增加工具栏,放置三个普通按钮,分别用于的工程中增加工具栏,放置三个普通按钮,分别用于RichTextB
36、ox控件中被选文本的复制、剪切、粘贴功能。控件中被选文本的复制、剪切、粘贴功能。在工具栏上放置二个组合框在工具栏上放置二个组合框ComboBox,为,为RichTextBox控件控件中文本选择字体与字号,如图中文本选择字体与字号,如图4.12所示。所示。程序设计步骤如下。程序设计步骤如下。4.24.2工具栏设计工具栏设计图图4.12 菜单与工具栏设计示例菜单与工具栏设计示例4.24.2工具栏设计工具栏设计(1)新建解决方案)新建解决方案ex4_3.sln(2)设置窗体属性)设置窗体属性Name:frm_ToolStrip。Text:“菜单与工具栏设计示例菜单与工具栏设计示例”。(3)将)将ex
37、4_2中的中的menuStrip1、ContextMenuStrip1、rtxt_Text控件复制到控件复制到frm_ToolStrip窗体中。窗体中。(4)将)将ex4_2中的所有事件处理程序复制到中的所有事件处理程序复制到frm_ToolStrip窗体中。窗体中。4.24.2工具栏设计工具栏设计(5)添加工具栏控件)添加工具栏控件ToolStrip工具箱工具箱 | 公共控件公共控件 | 将将ToolStrip添加到窗体添加到窗体(6)工具栏中添加按钮)工具栏中添加按钮在在ToolStrip控件中添加三个普通按钮,设置属性控件中添加三个普通按钮,设置属性:Name:tbtn_Cut tbtn
38、_Copy tbtn_PasteText: 剪切剪切 复制复制 粘贴粘贴Image:Cut.bmp Copy.bmp Paste.bmpDisplayStype:ImageandText:4.24.2工具栏设计工具栏设计(7)编写单击工具栏按钮事件过程)编写单击工具栏按钮事件过程 private void tbtn_Cut_Click(object sender, EventArgs e) Cut(); private void tbtn_Copy_Click(object sender, EventArgs e) Copy(); private void tbtn_Paste_Click(o
39、bject sender, EventArgs e) Paste(); 4.24.2工具栏设计工具栏设计(8)工具栏中添加两个存放字体与字号的)工具栏中添加两个存放字体与字号的ComboBox组合框组合框 Name:tcbo_Font : 存放字体存放字体 tcbo_Size: 存放字号。存放字号。tcbo_Font.Items:宋体宋体黑体黑体楷体楷体tcbo_Size.Items: 10,14,20,30,40,50,604.24.2工具栏设计工具栏设计(9)编写单击)编写单击tcbo_ Font组合列表框事件过程组合列表框事件过程 private void SetFont() if (r
40、txt_Text.Text.Length != 0) rtxt_Text. SelectionFont = new Font(tcbo_Font.Text, rtxt_Text.SelectionFont.Size); private void tcbo_Font_SelectedIndexChanged(object sender, EventArgs e) SetFont(); 4.24.2工具栏设计工具栏设计(10)编写单击)编写单击tcbo_ Size 组合框列表事件过程组合框列表事件过程 private void SetSize() if (rtxt_Text.Text.Length
41、 != 0) int dSize = 0; dSize = Convert.ToInt32(tcbo_Size.Text); rtxt_Text. SelectionFont = new Font(rtxt_Text.Font.Name, dSize); private void tcbo_Size_SelectedIndexChanged(object sender, EventArgs e) SetSize(); 4.24.2工具栏设计工具栏设计(11)程序运行)程序运行当程序运行后,先在当程序运行后,先在rtxt_Text文本编辑框中输入文本编辑框中输入“中华人民中华人民共和国共和国”,
42、选中,选中“中华人民共和国中华人民共和国”,用鼠标单击,用鼠标单击tcbo_ Font的的下拉按钮选择下拉按钮选择“黑体黑体”,单击,单击tcbo_Size的下拉按钮选择的下拉按钮选择40号字号字体,再单击体,再单击“复制复制”按钮,打回车使光标移到下一行,再单击按钮,打回车使光标移到下一行,再单击“粘贴粘贴”按钮,则按钮,则40号楷体的号楷体的“中华人民共和国中华人民共和国”被复制到下被复制到下一行,如图一行,如图4.12所示。所示。作业:(作业:(1)在自己笔记本电脑上完成例)在自己笔记本电脑上完成例4-1、例例4-2、例、例4-3设计任务。设计任务。(2)习题四)习题四 4.5,4.10
43、 4.24.2工具栏设计工具栏设计4.3 状态栏设计状态栏设计状态栏是状态栏是Windows风格程序界面的组成部分,用于风格程序界面的组成部分,用于Windows窗体下方状态信息的显示。窗体下方状态信息的显示。如:光标位置、日期、时间等状态信息。如:光标位置、日期、时间等状态信息。状态栏是用状态栏控件状态栏是用状态栏控件StatusStrip控件设计的,控件设计的,下面介绍下面介绍StatusStrip控件的作用、属性与应用举例。控件的作用、属性与应用举例。1作用作用StatusStrip控件用于设计状态栏。状态栏由一组窗格组成,控件用于设计状态栏。状态栏由一组窗格组成,用于显示当前工作状态。
44、用于显示当前工作状态。2.添加状态栏添加状态栏工具箱工具箱 | 菜单与工具栏菜单与工具栏 | StatusStrip控件。控件。3. 状态栏位置(状态栏位置(Dock属性)属性)用用Dock属性:属性:Top、Left、Right、Bottom、None可设置工具栏在窗体中的位置。可设置工具栏在窗体中的位置。4.3 状态栏设计状态栏设计4. 添加窗格添加窗格(1)窗格类型)窗格类型有有4种窗格类型种窗格类型(如图如图4.13所示):所示):StatusLabel:状态栏标签:状态栏标签ProgressBar:状态栏进度条:状态栏进度条DropDownButton:状态栏菜单按钮:状态栏菜单按钮
45、SplitButton:状态栏分隔按钮:状态栏分隔按钮 4.3 状态栏设计状态栏设计(2)添加窗格)添加窗格单击单击StatusStrip控件的下拉按钮(如图控件的下拉按钮(如图4.13),出现选),出现选择择4种窗格类型菜单,从中选择所需窗格类型,如单击种窗格类型菜单,从中选择所需窗格类型,如单击StatusLabel则状态栏中新增一个标签窗格,单击则状态栏中新增一个标签窗格,单击SplitButton则新增一个状态栏分隔按钮则新增一个状态栏分隔按钮 。5. 删除窗格删除窗格右击窗格右击窗格 | 选择删除选择删除4.3 状态栏设计状态栏设计6. 窗格属性窗格属性(1)Name(slbl):
46、窗格名称窗格名称(2)Text:窗格文本:窗格文本(3)Image:窗格图标:窗格图标(4)DisplayStype:共有共有4种显示类型种显示类型None:不显示不显示Text:显示窗格文本:显示窗格文本Image:显示窗格图标:显示窗格图标ImageandText:显示窗格文本与图标:显示窗格文本与图标4.3 状态栏设计状态栏设计图图4.13 状态栏的状态栏的4各种窗格类型各种窗格类型4.3 状态栏设计状态栏设计【例【例4.4】设计一个带有下拉式菜单、弹出式菜单、工具】设计一个带有下拉式菜单、弹出式菜单、工具栏与状态栏的文本编辑器,其工作界面如图栏与状态栏的文本编辑器,其工作界面如图4.1
47、3所示。所示。设计要求如下:设计要求如下:在例在例4.3的工程中添加状态栏控件的工程中添加状态栏控件StatusStrip,状态栏共,状态栏共有有2个标签,分别显示当前光标的坐标位置(个标签,分别显示当前光标的坐标位置(x、y)、日)、日期与时间,如图期与时间,如图4.14所示。所示。4.3 状态栏设计状态栏设计图图4.14 菜单、工具栏与状态栏设计示例菜单、工具栏与状态栏设计示例4.3 状态栏设计状态栏设计(1)打开解决方案)打开解决方案ex4_1.sln,新建项目,新建项目ex4_4,将,将ex4_4设设置为起动项目。置为起动项目。(2)设置窗体属性)设置窗体属性Name:frm_Stat
48、us。Text:“菜单、工具栏与状态栏设计示例菜单、工具栏与状态栏设计示例”。(3)将项目)将项目ex4_3中的中的menuStrip1、ContextMenuStrip1、ToolStrip1、rtxtText控件复制到控件复制到frm_Status窗体中。窗体中。(4)将项目)将项目ex4_3中的所有事件处理程序复制到中的所有事件处理程序复制到frm_Status窗体中。窗体中。4.3 状态栏设计状态栏设计(5)添加状态栏控件)添加状态栏控件StatusStrip工具箱工具箱 | 公共控件公共控件 | 将将StatusStrip添加到窗体添加到窗体(6)状态栏中添加标签)状态栏中添加标签在
49、在StatusStrip控件中添加控件中添加2个标签,设置属性个标签,设置属性:Name: slbl_XY slbl_DateText: X:0,Y:0 日期:时间:日期:时间:4.3 状态栏设计状态栏设计(7)窗体上添加时间控件)窗体上添加时间控件Timer(在组件栏中)在组件栏中)将将Timer控件放置在窗体中。控件放置在窗体中。设置设置Interval属性为属性为1000,即每隔,即每隔1000ms=1s触发一次的触发一次的Timer事件过程。事件过程。Enabled=True。Timer事件过程代码事件过程代码 private void timer1_Tick(object sende
50、r, EventArgs e) slbl_Date.Text = 日期:时间:日期:时间:+Convert.ToString (DateTime.Now); 说明:在过程中将系统日期说明:在过程中将系统日期Now赋给状态栏的第赋给状态栏的第2个标签,个标签,即每隔即每隔1秒钟刷新一次日期与时间。秒钟刷新一次日期与时间。4.3 状态栏设计状态栏设计(8)编写事件过程代码)编写事件过程代码 显示当前光标位置(显示当前光标位置(x,y) private void rtxt_Text_MouseMove(object sender, MouseEventArgs e) slbl_XY.Text = X