C#  工具栏控件
有几个Windows应用程序不包含菜单或工具栏?这个数字可能接近于0。在为Windows操作系统写的应用程序中,菜单和工具栏可能是最重要的部分。为了帮助用户创建应用程序的工具栏,Visual Studio 2010提供了ToolStrip控件,它不必做太多的工作,就可以快速创建外观类似于Visual Studio的工具栏。
1  建立ToolStrip控件
为应用程序创建工具栏,需要使用到ToolStrip控件及其相关的类。ToolStrip控件可以按钮的方式显示多个命令,提供用户访问命令的快捷方式,从而提高命令的访问效率。ToolStrip控件具有如下几种功能。
在各容器之间显示公共用户界面
创建易于自定义的常用工具栏,允许用户进行自定义、调节按钮以及展开未显示按钮。
支持溢出和运行时项的重新排序
通过通用的显示模型支持操作系统的典型外观和行为
对所有容器和包含的项进行事件的一致性处理,处理方式与其他控件的事件相同
支持用户将项从一个ToolStrip拖拽到另一个ToolStrip内。
支持创建下拉控件及用户界面类型编辑器
创建工具栏控件,可以直接选择窗体,然后再从【工具箱】面板中选择【菜单和工具栏】选项卡下的【ToolStrip】列表项目,将其拖拽至窗体中,如图9-4所示。
图9-4  插入工具栏控件
在插入工具栏控件后,可单击第一个默认插入的图表右侧的箭头,在弹出的菜单中选择工具栏控件,即可将控件插入到工具栏中,如图9-5所示。
图9-5  选择和插入控件
2  ToolStrip控件的属性
ToolStrip控件与MenuStrip控件类似,都是派生自System.Windows.Forms命名空间的类,其包含多种属性用于定义工具栏,如表9-3所示。
表9-3  ToolStrip控件的属性
属性
作用
Dock
获取或设置ToolStrip停靠在父容器的哪一边缘
AllowItemReorder
获取或设置一个值,指示拖放和项重新排序是否专门由ToolStrip类进行处理
LayoutStyle
获取或设置一个值,指示ToolStrip如何对其项进行布局
IsDropDown
获取一个值,指示单击ToolStripItem时,ToolStripItem是否显示下拉列表中的其他项。
OverflowButton
获取ToolStripItem,启用ToolStrip的“溢出”功能
Renderer
获取或设置ToolStripRenderer对象,对工具栏的外观和行为进行自定义。
RenderMode
获取或设置应用于ToolStrip的绘制样式
ToolStrip控件拥有一些伴随类,主要用于增强工具栏的灵活性,并为工具栏添加更多类型的内容,如表9-4所示。
表9-4  ToolStrip控件的伴随类
类名
作用
ToolStripItem
抽象基类,管理工具栏中包含的所有元素事件和布局
ToolStripContainer
提供一个容器,通过面板对工具栏中的元素进行布局排列和显示
ToolStripRenderer
处理工具栏对象中的绘制功能
ToolStripProfessionalRenderer
为工具栏提供Microsoft Office样式的外观
ToolStripManager
控制工具栏的呈现和漂浮,并控制工具栏中各种菜单的合并
ToolStripManagerRenderMode
指定多个工具栏的绘制样式
ToolStripRenderMode
指定应用于窗体中的工具栏的绘制样式
ToolStripControlHost
承载非工具栏且需要实现工具栏功能的其他控件
ToolStripItemPlacement
指定工具栏的布局方式,包括在主工具栏中布局、在溢出工具栏中布局或不布局
3  工具栏中的元素
在为工具栏添加元素时,可以看到工具栏支持8种控件类型,例如Button等。事实上虽然在窗体设计中,这8种控件的名称为之前介绍的控件名称,但在代码中,这8种控件是以独立的类实现的,如下所示。
ToolStripButton
ToolStripButton控件的作用是创建一个支持文本和图像的工具栏按钮,可以使用ToolStripItemImageAlign和ToolStripItemTextAlign等属性获取和设置其中图像和文本的位置。
ToolStripLabel
ToolStripLabel控件的作用是显示不可选择的ToolStripItem,其可以显示文本和图像,并且可以显示超链接,可使用LinkBehavior事件获取或设置一个表示链接的行为和值。
ToolStripSplitButton
表示左侧标准按钮和右侧下拉按钮的组合,如RightToLeft的值为Yes,则这两个按钮的位置互换。
ToolStripDropDownButton
表示当单击ToolStripDropDownButton时,可以从列表中选择单个项的控件,显示选项的下拉列表。
ToolStripSeparator
用于分割相邻的工具栏按钮,如工具栏是平面的样式,Separator按钮将显示为两个按钮之间的垂直直线,否则将显示三维的凹槽。
tool工具箱ToolStripComboBox
为在ToolStrip中承载而优化过的ComboBox控件,ToolStripComboBox显示一个与ListBox组合的编辑字段,使得用户可以从列表中选择或输入新的文本。
ToolStripTextBox
该控件允许在应用程序中输入文本。此控件具有多种标准Windows文本框控件所未有的附加功能,例如多行编辑等。
ToolStripProgressBar
该控件将所有ToolStripProgressBar的漂浮和显示功能与其典型进程跟踪功能组合在一起。ToolStripProgressBar在大多数情况下由StatusStrip承载,在很少情况下由ToolStrip承载。
下面通过一个实例,来说明ToolStrip控件的使用。该实例中分别向ToolStrip控件中添加了两个Text Button按钮和一个toolStripComboBox控件。操作步骤如下所示:
(1)打开Microsoft Visual Studio 2010。在菜单栏中,执行【文件】|【新建项目】命令,打开【新建项目】对话框。
(2)在【新建项目】窗口中,选择“Windows窗体应用程序”并在名称栏中输入项目的名称为“ToolStripTest”。然后,单击【确定】按钮进入可视化编程窗口,如图9-6所示。
(3)在【属性窗口】中设置各个控件的Name和Text属性并设置Form1的Text属性值为“按钮事件”,如图9-7所示。
 
图9-6  Windows窗体    图9-7  属性窗口
(4)执行【视图】|【工具箱】命令,打开工具箱面板。在工具箱面板中可以选择需要用到的控件。
(5)从【工具箱】的【公共控件】列表中选中ToolStrip控件将其拖放到空白的Windows窗体中。然后,分别向ToolStrip控件中添加了两个Text Button按钮和一个toolStripComboBox控件然后,调整好控件之间的距离以使窗体更加美观,如图9-8所示。
图9-8  设计界面
(6)双击Windows窗体,打开Form1.cs文件。双击Text Button按钮和toolStripComboBox控件按钮添加单击事件,代码如下所示。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ToolStripTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void 红ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.BackColor = Color.Red;
        }
        private void 黄ToolStripMenuItem_Click(object sender, EventArgs e)
        {