1本章教学目标菜单控件(MenuStrip)上下文菜单控件(ContextMenuStrip)工具栏控件(ToolStrip)状态栏控件(StatusStrip)打开文件对话框(OpenFileDialog)保存文件对话框(SaveFileDialog)字体对话框(FontDialog)颜色对话框(ColorDialog)8.1菜单8.1.1菜单选项与分隔条菜单项的设置分隔条(separator)8.1.2访问键和快捷键访问键(accesskey)Alt+key快捷键(shortcutkey)Ctrl+keyShift+key实例8.1例8.1创建一个菜单驱动,能实现最简单文字编辑功能的记事本程序例8.1程序代码(1)usingSystem;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.IO;//执行文件操作,必须引用这个命名空间namespaceex801{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidmenuFileNew_Click(objectsender,EventArgse){File.Create(@d:\test\1.rtf);MessageBox.Show(名为1.rtf的文件创建成功,创建文件);}}}例8.1程序代码(2)privatevoidmenuFileOpen_Click(objectsender,EventArgse)//打开文件{richTextBox1.LoadFile(@d:\test\2.rtf,RichTextBoxStreamType.RichText);}privatevoidmenuFileSave_Click(objectsender,EventArgse)//保存文件{richTextBox1.SaveFile(@d:\test\3.rtf);MessageBox.Show(名为3.rtf的文件保存成功,保存文件);}privatevoidmenuFileExit_Click(objectsender,EventArgse)//退出运行{this.Close();//结束程序,退出运行}例8.1程序代码(3)privatevoidmenuEditUndo_Click(objectsender,EventArgse)//撤消{if(richTextBox1.CanUndo==true)richTextBox1.Undo();//撤消在RichTextBox中所做的修改elseMessageBox.Show(无法撤消);}privatevoidmenuEditCut_Click(objectsender,EventArgse)//剪切{richTextBox1.Cut();//将文本框中被选中的文字移动到剪贴板}privatevoidmenuEditCopy_Click(objectsender,EventArgse)//复制{richTextBox1.Copy();//将文本框中被选中的文字复制到剪贴板}privatevoidmenuEditPaste_Click(objectsender,EventArgse)//粘贴{richTextBox1.Paste();//将剪贴板中的内容粘贴到文本框}例8.1程序代码(4)privatevoidmenuEditFind_Click(objectsender,EventArgse)//查找{//查找到第一个“迪斯尼”并将其选中intposition=richTextBox1.Text.IndexOf(迪斯尼);if(position=0)richTextBox1.Select(position,3);}privatevoidmenuEditReplace_Click(objectsender,EventArgse)//替换{//将所有的“迪斯尼”替换为“Disney”stringstr1=richTextBox1.SelectedText;richTextBox1.SelectedText=str1.Replace(迪斯尼,Disney);}例8.1程序代码(5)privatevoidmenuFormatFont_Click(objectsender,EventArgse)//字体{richTextBox1.SelectionFont=newFont(隶书,24,FontStyle.Bold);//设置字体}privatevoidmenuFormatColor_Click(objectsender,EventArgse)//颜色{//设置被选中的文字为红色richTextBox1.SelectionColor=Color.Red;}privatevoidmenuHelpAbout_Click(objectsender,EventArgse)//关于作者{MessageBox.Show(我是重庆大学教务处赵品勇,欢迎与我联系,作者自我介绍);}程序存在的问题?功能极其有限“打开”只能打开名为“2.RTF”的文件“替换”只能将“迪斯尼”替换成“Disney”“颜色”只能把被选中的文字设置为红色要实现良好的交互功能,最好使用对话框(dialog)组件8.1.3上下文菜单控件(ContextMenuStrip)设置控件的ContextMenuStrip属性上下文菜单属于窗体上的特定对象,每个对象只能有一个与之相关联的上下文菜单。将指定对象的ContextMenu属性设置为添加到窗体的一个ContextMenuStrip控件名称,就建立了二者的关联实例8.2例8.2设计一个用来改变图片框背景颜色的上下文菜单。例8.2代码usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceex802{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidmenuColorRed_Click(objectsender,EventArgse){pictureBox1.BackColor=Color.Red;}}}例8.2代码privatevoidmenuColorGreenripMenuItem_Click(objectsender,EventArgse){pictureBox1.BackColor=Color.Green;//图片框背景为绿色}privatevoidmenuColorBlue_Click(objectsender,EventArgse){pictureBox1.BackColor=Color.Blue;//图片框背景为蓝色}privatevoidmenuColorPurple_Click(objectsender,EventArgse){pictureBox1.BackColor=Color.Purple;//图片框背景为紫色}例8.2代码privatevoidmenuColorYellow_Click(objectsender,EventArgse){pictureBox1.BackColor=Color.Yellow;//图片框背景为黄色}privatevoidmenuColorWhite_Click(objectsender,EventArgse){pictureBox1.BackColor=Color.White;//图片框背景为白色}8.2工具栏和状态栏8.2.1工具栏控件8.2.2状态栏控件实例8.3例8.3创建一个工具栏驱动,能实现最简单的文字编辑功能,并能在状态栏显示状态信息的记事本程序。例8.3代码usingSystem;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.IO;//涉及文件操作,必须引用命名空间System.IOnamespaceex703{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}stringmyfontFamily;//这两个变量必须在各事件过程的前面定义intmyfontSize;privatevoidtoolStripNew_Click(objectsender,EventArgse){File.Create(@d:\test\1.rtf);toolStatus2.Text=名为1.rtf的文件创建成功;}}}8.3对话框打开文件对话框(OpenFileDialog)保存文件对话框(SaveFileDialog)字体对话框(FontDialog)颜色对话框(ColorDialog)8.3.1打开文件对话框(OpenFileDialog)8.3.1打开文件对话框(OpenFileDialog)常用属性:FileName设置初始打开的文件名InitialDirectory设置初始打开的文件目录Filter设置在“文件类型”中显示的文件过滤器,指定允许在列表框中显示的文件类型:Dialog1.Filter=文本文件|*.txt|RTF文件|*.rtf|所有文件|*.*;FilterIndex设置默认的文件过滤器,属性值为整数,表示Filter属性中各个选项的序号8.3.2保存文件对话框(SaveFileDialog)OpenFileDialog的常用属性和方法实例8.4例8.4创建一个菜单驱动,运用对话框实现以交互方式创建、打开和保存文件,并能在状态栏显示状态信息的简单记事本程序。实例8.4代码(1)privatevoidForm1_Load(objectsender,EventArgse){openFileDialog1.FileName=;//设置默认的初始打开文件名为空字符串openFileDialog1.InitialDirectory=@F:\C#;//设置文件操作的初始目录openFileDialog1.Filter=文本文件|*.txt|RTF文件|*.rtf|所有文件|*.*;openFileDialog1.FilterIndex=2;//把筛选器中的第二项设置为默认值saveFileDialog1.Filter=文本文件|*.txt|RTF文件|*.rtf|所有文件|*.*;saveFileDialog1.FilterIndex=2;toolStatus1.Text=当前系统日期:+DateTime.Now.ToShortDateString();}实例8.4代码(2)privatevoidmenuFileNew_Click(objectsender,EventArgse){//将保存文件对话框的标题设置为“新建”saveFileDialog1.Title=新建;DialogResultmyresult=saveFileDialog1.ShowDialog();//测试用户是否执行了有效的新建操作if(myresult==DialogResult.OK){//按从对话框获得的文件名创建新文件File.Create(@saveFileDialog1.FileName);toolStatus2.Text=saveFileDialog1.FileName+文件创建成功;}}实例8.4代码(3)privatevoidmenuFileOpen_Click(objectsender,EventArgse){//打开对话框并获取返回值Dia