工具栏设计
一、ToolBar控件
ToolBar控件称为工具栏,程序运行后工具栏可动态地显示在窗体的合适位置,供用户使用程序的功能。
1、创建工具栏
将ToolBar控件拖入应用程序窗体的主菜单之下,可以看到主菜单下方增加了一个控件toolBar1,不过此时它只是一片空白,并没有任何工具按钮。
将ImageList控件拖入应用程序窗体,可以看到应用程序窗体下部的架子上增加了一个控件imageList1。程序运行后imageList1控件并不显示,它的作用是为toolBar1控件的工具按钮提供图片。因此应立即将toolBar1控件的ImageList属性设置为imageList1。
打开imageList1的属性窗口,单击Image属性后的 浏览按钮,启动Image集合编辑器,依次向编辑器中加入toolBar1工具栏的工具按钮所需要的图片(图片可以来自.ico文件或.bmp文件)。如下图:
打开toolBar1的属性窗口,单击Buttons属性后的
浏览按钮,启动ToolBarButton集合编辑器,依次向编辑器中加入toolBar1工具栏的工具按钮,设置每个按钮的Name、ImageIndex、ToolTipText和Style属性赋值。如下图:
Button的常用属性有以下几个:
Name属性:工具按钮的名字。
ImageIndex属性:在imageList1控件中的图片索引号。
ToolTipText属性:当鼠标光标在按钮上停顿一段时间后显示的文字提示。
Style属性:按钮的类型。PushButton是常用的选择,按下即可弹起;ToggleButton是按下不弹起,再次单击时才弹起;Separator用于分隔两组按钮;DropDownButton是带有下拉,形如 的按钮,若选择这种形式,必须同时将它的DropDownMenu属性指定到某一个上下文菜单,以便单击 时能弹出上下文菜单。
工具栏toolBar1的各按钮Button的属性设置:
2、为工具栏指定停靠方式
可以设置工具栏的停靠位置,使其停靠在窗体的上边、左边、下边或右边。
在toolBar1的属性窗口中将属性Dock设置为Top、Left、Bottom、Right或None之一。如图:
3、为工具按钮的Click编写事件处理程序
工具栏上的所有按钮共享同一个Click事件,在这个事件处理程序中,需要用某种方法来区分用户是单击了哪个按钮。下段代码中是利用了每个按钮的Button.ToolTipTex属性来区分的。
工具栏每个按钮的功能,应该都有一个菜单项与之对应,当某个按钮被Click时,只要调用对应的菜单项的Click处理程序即可。
private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
switch(e.Button.ToolTipText)
{
case "新建":mainMenuItemNew_Click(null,null);
break;
case "打开":mainMenuItemOpen_Click(null,null);
break;
case "保存":mainMenuItemSave_Click(null,null);
break;
case "撤消":mainMenuItemUndo_Click(null,null);
break;
case "剪切":mainMenuItemCut_Click(null,null);
break;
case "复制":mainMenuItemCopy_Click(null,null);
break;
case "粘贴":mainMenuItemPaste_Click(null,null);
break;
case "删除":mainMenuItemDelete_Click(null,null);
break;
}
}
通用对话框设计,包括打开文件、保存文件、选择字体、选择颜色、设置页面和打印,对应的类名为OpenFileDialog、SaveFileDialog、FontDialog、ColorDialog、PageSetupDialog和PrintDialog。
一、创建和显示通用对话框
要显示通用对话框,只需调用其ShowDialog()方法即可,例如:openFileDialog1.ShowDialog()就会将对话框openFileDialog1显示出来
二、设置和获取通用对话框的属性
1、通用对话框常用的属性如下表:
类型 | 作用 | 属性 |
OpenFileDialog | 打开文件 | FileName:选定的文件名和完整的路径 |
Filter:筛选特定后缀的文件 | ||
Multiselect:是否允许选择多个文件 | ||
SaveFileDialog | 保存文件 | FileName:指定的文件名和完整的路径 |
Filter:筛选特定后缀的文件 | ||
DefaultExt:设置或获取默认文件扩展名 | ||
OverwritePrompt:保存的文件名已存在时是否显示警告 | ||
FontDialog | 设置字体 | Font:选定的字体 |
Color:选定的字体颜色 | ||
ShowColor:十分显示颜色选择框 | ||
ColorDialog | 设置颜色 | Color:选定的颜色 |
AllowFullOpen:十分可以使用自定义颜色 | ||
PageSetupDialog | 页面设置 | Document:从中获取页面设置的PrintDocument |
AllowMargins:是否显示边距部分 | ||
AllowOrientation:是否显示方向部分(横/纵向) | ||
AllowPaper:是否显示纸张部分(纸张大小和来源) | ||
AllowPrinter:是否显示“打印机”按钮 | ||
PrintDialog | 打印设置 | Document:获取或设置PrintDocument |
AllowPrintToFile:是否显示“打印到文件”复选框 | ||
AllowSelection:是否显示页码范围选项按钮 | ||
AllowSomePage:是否显示“页”选项按钮 |
2、从对话框获取信息
用户通过对话框向应用程序提供信息,应用程序必须从通用对话框获取用户的信息。用户信息被保存在对话框的属性之中,应用程序只要去引用那些感兴趣的属性即可。
在应用程序中显示对话框,用户关闭对话框后,了解用户采取的操作是十分重要的,例如他是否单击了OK按钮或是Cancel按钮。操作信息被保存在DialogResult中,它可能的取值是OK、Cancel、Abort、Retry、Ignore、Yes和No(或None)。请看下例:
ColorDialog ColorDlg=new ColorDialog();
if(ColorDlg.ShowDialog()==DialogResult.OK)
{
textBoxEdit.ForeColor=ColorDlg.Color;
}
程序段首先创建一个颜色对话框实例,然后显示对话框,用户若是单击了OK按钮,就将文本框的前景色改为在颜色对话框中选定的颜色(隐含了用户若是单击了Cancel按钮,就不改变)。
3、设置对话框所有者
Form.ShowDialog方法有一个可选参数,即所有者,它用来确定窗口的父子关系。想要对话框出现在哪个窗口中,这个参数就应该是那个窗口。通常,希望对话框的所有者是创建和使用它的对象,这时该参数就是this,这样就会使对话框出现在窗体前面,这是正确的选择。上例不妨改为:
if(ColorDlg.ShowDialog(this)==DialogResult.OK)
{
textBoxEdit.ForeColor=ColorDlg.Color;
}
三、使用消息框
1、Show()方法的参数
Show(消息,标题,按钮形式,图标类型)
程序段:
MessageBox.Show("要保存正在编辑的文件否?","保存文件", MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question);
显示的消息框如下:
2、枚举常量取值
枚举常量MessageBoxButtons用来确定消息框中按钮的个数和布局,以便应用程序收集用户的响应。MessageBoxButtons的取值如下:
MessageBoxButtons的取值
值 | 按钮 |
OK | 确定(OK) 默认 |
OKCancel | 确定(OK)、取消(Cancel) |
YesNo | 是(Yes)、否(No) |
YesNoCancel | 是(Yes)、否(No) 、取消(Cancel) |
RetryCancel | 重试(Retry)、取消(Cancel) |
AbortRetryIgnore | 终止(Abort)、重试(Retry)、忽略(Ignore) |
枚举常量MessageBoxIcon用来确定消息框中图标的类型,以增加消息的表现力。MessageBoxIcon的取值如下:
MessageBoxIcon的取值
值 | 按钮 |
None | 无图标 默认 |
Asterisk | 包含小写i的圆圈 |
Error | 包含白色×的红色圆圈 |
Exclamation | 包含提示点的黄色三角形 |
Hand | 包含白色×的红色圆圈 |
Information | 包含小写i的圆圈 |
Question | 包含问号标记的圆圈 |
Stop | 包含白色×的红色圆圈 |
Waming | 包含提示点的黄色三角形 |





























































































































































































































