目录
1.工具栏TooIStrip概述
2.TooIStrip控件的属性
3.创建工具栏
工具栏是一个与菜单栏同等重要的窗体界面元素。在MDI应用程序中,工具栏也能像菜单一样实现合并,即可以在主窗体的工具栏中放上全局通用的工具项,而针对特定子窗体的工具项在子窗体中设计,显示的时候与主窗体的工具栏合并显示。
1.工具栏TooIStrip概述
Windows窗体中的工具栏控件用于显示一系列菜单选项的位图按钮。这样单击工具栏中的一个按钮,就相当于选择了一个菜单项。工具栏上的按钮通常包含图片,不包含文本,但它可以既包含图片又包含文本。除了按钮外,工具栏上也可以包含组合框和文本框。通常情况下,工具栏包含的按钮和菜单与应用程序菜单结构中的选项相对应,以提供对应用程序的常用功能和选项的快速访问。
工具栏TooIStrip与MenuStrip一样具有专业化的外观和操作方式。通常情况下,工具栏停靠在其父窗口的顶部,也可以停靠在窗口的任百边。用户可以改变工具栏的尺寸,或随意拖动工具栏。当将鼠标指向工具栏按钮时,可以显示工具提示,给出该按钮的用途信息。工具提示是用于简述按钮或者菜单用途的一个小的弹出式窗口,这对只显示图标的工具栏按钮非常有用。
实际上,TooIStrip是MenuStrip,StatusStrip和ContextMenuStrip的抽象基类。TooIStrip控件为工具栏相关项(如菜单、按钮和文本框)的容器,即工具栏中的选项是在TooIStrip中显示。而TooIStrip的派生类则以其他方式(如在菜单中或在状态栏中)显示选项。
ToolStrip 控件体系结构
TooIStrip控件作为一个容器,也就可以通过其Items集合,访问TooIStrip中的所有工具栏选项。这些工具栏选项都是从ToolStripltem抽象类中派生的。工具栏选项可以直接从TooIStripltem类继承,也可以通过TooIStripControLHost或TooIStripDropDownltem间接从ToolStripltem继承。TooIStripltem继承层次结构如图。
TooIStripltem的选项类型
项类型 | 用户界面元素 |
TooStripLabel | 表示工具栏中的一个标签 |
ToolStripButton | 表示工具栏中的一个按钮 |
ToolStripSeparator | 表示工具栏和菜单中的水平或垂直线 |
TooStripControlHost | 包含寄宿的控件的用户界面元素 |
TooStripSpiltButton | 显示为一个右端带有下拉按钮的按钮,单击该下拉按钮,就会在它的下面显示一个菜单 |
ToolStripComboBox | 表示工具栏中的一个组合框Combobox |
ToolStripProgressBar | 表示在工具栏中嵌入一个进度条ProgressBar |
TooStripTextBox | 表示工具栏中一的个文本框 |
ToolStripMenuitem | 表示MenuStrip或ContextMenuStrip上显示的可选选项 |
ToolStripDropDownButton | 类似于TooStripSplitButton,区别是去除了下拉按钮,以下接数组图像替代 |
2.TooIStrip控件的属性
可以查看这个链接:ToolStrip 类
AllowItemReorder | 获取或设置一个用于指示是否专门由 ToolStrip 类处理拖放和项重新排序操作的值。 |
AllowMerge | 获取或设置一个值,该值指示能否将多个 MenuStrip、ToolStripDropDownMenu、ToolStripMenuItem 及其他类型进行组合。 |
BindingContext | 获取或设置 ToolStrip 的绑定上下文。 |
Items | 获取属于 ToolStrip 的所有项。 |
LayoutStyle | 获取或设置一个值,该值指示 ToolStrip 如何对项集合进行布局。 |
Stretch | 获取或设置一个值,该值指示 ToolStrip 在 ToolStripContainer 中是否从一端拉伸到另一端。 |
ShowItemToolTips | 获取或设置一个值,该值指示是否在 ToolStrip 项上显示工具提示。 |
Visible | 获取或设置一个值,该值指示是否显示该控件及其所有子控件。 (继承自 Control) |
VScroll | 获取或设置一个值,该值指示垂直滚动条是否可见。 (继承自 ScrollableControl) |
3.创建工具栏
续045快捷菜单,添加一个工具栏,并且该工具栏可以停靠在窗体的四个边框。
(1)为了使工具栏可以在父窗体的四个边框停靠,需要添加TooIStripPanel控件。由于该控件并不在“工具箱”中,因此,需要在“工具箱”中右击打开快捷菜单,再选择“选择项”打开“选择工具箱项”对话框,从中找到并选择TooIStripPanel。
(2)从“工具箱”中将一个TooIStripPanel控件拖动到主窗体上,并选择TooIStripPanel控件,在“工具箱”中双击TooIStrip控件,这样在TooIStripPanel控件中会创建一个TooIStrip控件。
(3)添加四个TooIStripPanel控件,分别停靠于窗体的左侧、顶部、右侧和底部。修改其Dock属性为Left. Top, Right和Bottom,并修改其Name属性为tspLeft. tspTop. tspRight和tspBottom。
(4)选中添加的TooIStrip控件,向其中添加一个TooIStripButton按钮。单击Image属性中的省略号(…)按钮,找开如图10-14所示“选择资源”对话框。在该对话框中单击“导人“按钮,选择该工具栏按钮所使用的图像。
(VS2010安装文件夹”C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\VS2010ImageLibrary\2052“中有图库)
(5)在主窗体中分别添加“新建”, “打开”和“保存”工具栏按钮,一修改其Name属性为:btnNew、btnOpen和btnSave。
(6)选择“新建”工具栏按钮,在其“属性”窗口中单击“事件”标签打开控件的事件窗口,在Click事件中选择NewMenultemClick,
Private Sub btnNew_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNew.ClickNewMenuItem.PerformClick()End Sub
(7)双击“打开”工具栏按钮,添加如下的Click事件处理程序。
Private Sub btnOpen_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.ClickOpenFileDialog1.DefaultExt = "*.txt"OpenFileDialog1.Filter = "RTF文档(*.rtf)|*.rtf|文本文件((.txt)|*.txt|所有文件(*.*)|*.*"OpenFileDialog1.ShowReadOnly = TrueDim filename As String = NothingIf OpenFileDialog1.ShowDialog = DialogResult.OK And OpenFileDialog1.FileName.Length > 0 Thenfilename = OpenFileDialog1.FileNameNewMenuItem.PerformClick()Dim activechild As ChildFrm = Me.ActiveMdiChildIf Not activechild Is Nothing ThenDim fileExt As String = NothingIf filename.Trim <> String.Empty Thenactivechild.txtContent.ResetText()fileExt = IO.Path.GetExtension(filename).ToUpperIf fileExt = "*.RTF" Thenactivechild.txtContent.LoadFile(filename, RichTextBoxStreamType.RichText)Elseactivechild.txtContent.LoadFile(filename, RichTextBoxStreamType.PlainText)End Ifactivechild.curFileName = filenameMe.Text = filenameEnd IfEnd IfEnd IfEnd Sub
(8) 双击“保存”工具栏按钮,添加如下的事件处理程序。
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.ClickDim activechild As ChildFrm = Me.ActiveMdiChildIf Not activechild Is Nothing Thenactivechild.savedocument()End IfEnd Sub
(9)对于“保存”工具栏按钮,当父窗体中未包含任何子窗体时, “保存”工具栏按钮应该被禁用。可以为TooIStrip控件添加如下的Paint事件处理程序。
Private Sub ToolStrip1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles ToolStrip1.PaintDim activechild As Form = Me.ActiveMdiChildIf activechild Is Nothing ThenbtnSave.Enabled = FalseElsebtnSave.Enabled = TrueEnd IfEnd Sub