Visual Basic .NET 教程
模块五 菜单栏、工具栏、状态栏
能力目标:能够设计、创建和使用菜单、工具栏和状态栏
知识目标:掌握菜单控件、工具栏控件和状态栏控件常用的属性、方法和事件
一个典型的Windows应用程序必然包含菜单、工具栏和状态栏,用户通过单击菜单中的菜单项,来实现应用程序所提供的功能,用户也可以通过单击工具栏上的工具按钮,来实现应用程序中的常用的主要功能,状态栏主要用于显示应用程序当前的状态等信息。菜单、工具栏和状态栏的使用,可以使应用程序的界面友好,方便用户的使用。
项目一 菜单制作
例5-1设计制作一个如图所示的下拉菜单应用程序
图一文件菜单 |
设计步骤:
1.新建项目vbnet5-1
单击“文件”菜单,在出现的下位菜单中,单击“新建”,再单击“新建项目”,新建一个项目。项目存放在“H:/VB.net”下,项目名取“VBnet5-1”。项目类型选择“Visual Basic项目”、模板选择“Windows应用程序”,项目名与位置按以上要求改写,其他选默认值,单击“确定”按钮。
图三 菜单控件 |
在工具箱中找到菜单控件menustrip如图一所示,双击menustrip控件就把此控件添加到窗体上。用同样的方法把richbox、Openfiledialog、fontdialog、colordialog、savefiledialog、printdialog控件添加到窗体上。
3.在菜单中添加菜单项
在窗体中单击MainMenu控件对象,菜单对象显示内容为“请在此输入”。单击文本“请在此输入”,输入菜单名称。在已输入菜单的下方和右方出现“请在此输入”菜单框,按设计要求完成菜单的设计如图一、图二所示。
4.设置菜单项的快捷键:单击“打开”菜单项,在“打开”菜单项的属性窗口找到ShortCutKeys属性,单击 ,弹出快捷方式设置对话框,如图所示。
按要求设置好快捷键。
5. 输入各菜单项的代码
双击已建立的菜单项,进入相关菜单项的代码段,输入完成该项菜单项功能的代码。
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
FontDialog1.Font = RichTextBox1.Font
FontDialog1.ShowColor = True
If FontDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
RichTextBox1.Font = FontDialog1.Font
End If
End Sub
Private Sub 退出QToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 退出QToolStripMenuItem.Click
Me.Close()
End Sub
Dim filename As String
Private Sub 打开ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 打开ToolStripMenuItem.Click
Try
OpenFileDialog1.Filter = "文本文(*.txt)|*.txt|Word(*.doc)|*.doc|batch files(*.bat)|*.bat|所有文件(*.*)|*.*"
'显示“打开”对话框前先判断返回值是否为“OK”
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
'如果是OK则打开ss对话框,并把选中的文本文件放入richtextbox中
RichTextBox1.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.PlainText)
filename = OpenFileDialog1.FileName
End If
Catch ex As Exception
MsgBox("读取文件失败")
End Try
End Sub
Private Sub 窗体总在最前面ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 窗体总在最前面ToolStripMenuItem.Click
If 窗体总在最前面ToolStripMenuItem.Checked = False Then
窗体总在最前面ToolStripMenuItem.Checked = True
Me.TopMost = True
Else
窗体总在最前面ToolStripMenuItem.Checked = False
Me.TopMost = False
End If
End Sub
Private Sub 另存为ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 另存为ToolStripMenuItem.Click
Dim filenum As Integer
'设定文件保存对话框的属性
With SaveFileDialog1
.DefaultExt = "txt"
.Filter = "Text files ( *.txt )|*.txt"
.FilterIndex = 1
.InitialDirectory = "C:/"
.OverwritePrompt = True
.Title = "文件保存对话框"
End With
'以下是把文本框中的文字另保存为文本文件
If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
filename = SaveFileDialog1.FileName
filenum = FreeFile()
FileOpen(filenum, filename, OpenMode.Output)
Write(filenum, RichTextBox1.Text)
FileClose(filenum)
End If
End Sub
Private Sub 保存ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 保存ToolStripMenuItem.Click
Dim filenum As Integer
Try
filenum = FreeFile()
FileOpen(filenum, filename, OpenMode.Output)
Write(filenum, RichTextBox1.Text)
FileClose(filenum)
Catch ex As Exception
MsgBox("写入失败")
End Try
End Sub
Private Sub 打印ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 打印ToolStripMenuItem1.Click
Dim printdocument1 As New System.Drawing.Printing.PrintDocument
If PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
printdocument1.Print()
End If
End Sub
Private Sub 新建ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 新建ToolStripMenuItem.Click
RichTextBox1.Text = ""
End Sub
Private Sub 字体设置ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 字体设置ToolStripMenuItem.Click
If FontDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
RichTextBox1.SelectionFont = FontDialog1.Font
End If
End Sub
Private Sub 颜色设置ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 颜色设置ToolStripMenuItem.Click
If ColorDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
RichTextBox1.SelectionColor = ColorDialog1.Color
End If
End Sub
Private Sub 增加窗体的尺寸ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 增加窗体的尺寸ToolStripMenuItem.Click
'Me.Size = New Size(Me.Size.Width + 10, Me.Size.Height + 10)
Me.Width += 10
Me.Height += 10
End Sub
Private Sub 减少窗体的尺寸ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 减少窗体的尺寸ToolStripMenuItem.Click
Me.Width += 10
Me.Height += 10
End Sub
Private Sub 增加窗体的透明度ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 增加窗体的透明度ToolStripMenuItem.Click
Me.Opacity -= 0.05
End Sub
Private Sub 减少窗体的透明度ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 减少窗体的透明度ToolStripMenuItem.Click
Me.Opacity += 0.05
End Sub
支撑知识:
菜单是Windows界面的重要组成部分,VB.net菜单形式丰富,功能强大,菜单给庞杂的命令进行分组,使用户能够更方便、更直观地访问这些命令。同时菜单还能使自己设计的应用程序看起来更专业化,更美观大方。
菜单有下拉式菜单和弹出式菜单两种类型。
1-1.下拉式菜单组成
(1)下拉式菜单由主菜单、主菜单项、子菜单等组成。
(2)子菜单可分为一级子菜单、二级子菜单直到五级子菜单。
(3)每级子菜单由菜单项、快捷键、分隔条、子菜单提示符等组成。
主菜单项 |
子菜单提示符 |
一级菜单 |
对话提示符 |
热键(AIt+O) |
快捷键(Ctrl+Q) 快捷键(Ctrl+Q)
快捷键(Ctrl+Q)
|
二级子菜单 |
菜单项 |
分隔条 |
图4.2 下拉式菜单的组成
①菜单项:所有子菜单的基本元素就是菜单项,每个菜单项代表一条命令或子菜单标题。
②分隔条:分隔条为一条横线,用于在子菜单中区分不同功能的菜单项组,使菜单项功能一目了然,并且方便操作。
③快捷键:为每个最底层的菜单项设置快捷键后,可以在不用鼠标操作菜单项的情况下,通过快捷键直接执行相应的命令。
④热键:热键是在鼠标失效时,为用户操作菜单项提供的按键选择,使用热键时,须与<Alt>键同时使用。
⑤子菜单提示符:如果某个菜单项后有子菜单,则在此菜单项的右边出现一个向右指示的小三角子菜单提示符。
⑥对话框提示符:如果单击某个菜单项会弹出对话框,则在此菜单项的后边应加上“…”。
1-2MenuStrip控件常用属性和事件
MenuStrip 控件主要用于生成所在窗体的主菜单.在设计窗体中添加该控件后,会在窗体上显示一个菜单栏,可以直接在此菜单栏上编辑各主菜单项及对应的子菜单项,也可以通过鼠标右键单击对应的菜单项修改项的类型;当菜单的结构建立起后,再为每个菜单项编写事件代码,即可完成窗体的菜单设计.
编辑各菜单项内容时,可以用符号"&"指定该菜单项的组合键,让其后的字母带下划线显示,如编辑菜单项"E&xit",则会显示为"Exit",意思是可以直接用"Alt+x"组合键实现与单击该菜单项相同的功能;用符号"-"可以在菜单中显示各项之间的分隔条.
1.MenuStrip控件的基本属性
(1)[AllowItemReorder]属性:当程序运行时,按下键是否允许改变各菜单项的左右排列顺序.默认值为false,当更改该属性值为true时,按下键的同时可以用鼠标拖动各菜单项以调整其在菜单栏上的左右位置.
(2)[Dock]属性:指示菜单栏在窗体中出现的位置,默认值为Top.
(3)[GripStyle]属性:是否显示菜单栏的指示符,即纵向排列的多个凹点,默认值为Hidden.当更改该属性值为Visible时,显示位置由[GripMargin]属性指定.
(4)[Items]属性:用于编辑菜单栏上显示的各菜单项.单击[Items]属性后[…]按钮,弹出[项集合编辑器]对话框,如图所示.
2.MenuStrip控件的常用事件
(1)ItemClicked事件:当单击菜单栏上各主菜单项时触发的操作.
(2)LayoutCompleted事件:当菜单栏上各主菜单项的排列顺序发生变化之后触发的操作.使用该事件时,[AllowItemRecord]属性必须设为true,即当程序运行时,按下Alt键重新排列菜单栏上各主菜单项的顺序之后触发该事件.
1-3菜单项的属性和事件
1.MenuItem菜单项的基本属性
(1)[Checked]属性:指示菜单项是否被选中.默认值为false.
(2) [CheckOnClick]属性:决定单击菜单项时是否使其选中状态发生改变.默认值为false,即单击菜单项不会影响其[Checked]属性:当更改该属性值为true时,则每次单击菜单项都会影响其[Checked]属性,使其值在false和true之间切换.
(3)[CheckState]属性:指示菜单项的状态.与复选框CheckBox控件的[ThreeState]属性相同,共有3个属性值:Checked,Unchecked和Indeterminate,分别表示选中,未选中和不确定3种状态.
(4)[DisplayStyle]属性:指示菜单项上的显示内容.共有4个属性值:None,Text,Image和ImageAndText,分别表示不显示任何内容,仅显示图标,同时显示文本和图标.默认值为ImageAndText.
(5)[DropDownItems]属性:单击该属性后的[…]按钮,调出[项集合编辑器]对话框,以此编辑该菜单项对应得子菜单中的各菜单项.
(6)[Image]属性:指定在该菜单项上显示的图标.
(7)[ImageScaling]属性:指定是否调整图标大小.默认属性值为SizeToFit,即调整图标大小以适应菜单项.该属性的另一个属性值为None,即不调整图标大小.
(8) [ShortcutScaling]属性:为菜单项指定的快捷键.单击该属性后的下拉按钮,出现如图所示的设置页面,用于设置菜单项的快捷组合键.设置时,可以选择,,3个功能键的任意组合(注意键不能单独使用)作为修饰符;在[键]下拉列表框中选择快捷键,其中包括键盘可输入的任何字符.完成设置后即可使用说设置的快捷键调用菜单项的功能.该属性的默认值为None.
注意:[ShortcutKeys]属性所设置的快捷键与使用"&" 设置的组合键,虽然都是通过设定的键盘操作完成与鼠标单击相同的功能,但是在本质上二者是不同的."&"设置的组合键只有在菜单项可见的情况下才可使用,所以不能称之为快捷键;而[ShortcutKeys]属性所设置的快捷键无论菜单项是否可见都可以使用.
(9)[ShowShortCutKeys]属性:指示是否在菜单项上显示快捷键.默认值为true,即在菜单项上按照[ShowShortCutKeys]属性的设置显示快捷键.
2.MenuItem菜单项的常用事件
(1)Click事件:单击菜单项时触发.
(2)DropDownClosed事件:关闭菜单项的子菜单时触发的操作.
(3)DropDownItemClicked事件:单击菜单项的子菜单中任何一项时触发的操作.
(4)DropDownOpened事件:菜单项的子菜单打开之后触发的操作.
(5)DropDownOpening事件:打开菜单项的子菜单时触发的操作.
例5-2 在例5-1的基础上制作一个如图所示的弹出菜单,
操作步骤:
1.在工具箱中找到ContextMenuStrip组件,选中并拖放到地form1窗体中,此时,组件栏出现一个ContextMenuStip1的控件。
2.单击ContextMenuStrip1控件,在窗体会显示ContextMenuStrip的字样来,在ContextMenuStrip的下方显示“请在此键入”文本框,在文本框中输入要添加的菜单项“剪切”,“复制”,“粘贴”。
3.把richtextbox1的ContextMenuStrip属性值设置为ContextMenuStrip1。
4.编写菜单项的代码:
Private Sub 复制ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 复制ToolStripMenuItem.Click
RichTextBox1.Copy()
End Sub
Private Sub 前切ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 前切ToolStripMenuItem.Click
RichTextBox1.Cut()
End Sub
Private Sub 粘贴ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 粘贴ToolStripMenuItem.Click
RichTextBox1.Paste()
End Sub
支撑知识:
2-1ContextMenuStrip控件常用属性和事件
ContextMenuStrip控件的功能是制作右键快捷菜单.注意:该控件是用于为其他控件服务的,不能单独使用.当向窗体中添加一个 ContextMenuStrip控件,会在窗体顶端出现与MenuStrip控件相似的菜单栏,所以也就不能在菜单栏上添加任何菜单项,只能在子菜单中编辑各菜单项.编辑完成的ContextMenuStrip控件需要在窗体或相关控件的[ContextMenuStrip]属性中与其建立关联,才可以在程序运行时用鼠标右键单击对应控件,弹出该快捷菜单.
1.常用的基本属性
(1)[Items]属性:用于编辑快捷菜单上的各菜单项.其编辑方式与MenuStrip控件的菜单项编辑相似,都是调用[项集合编辑器]对话框来生成菜单项的.
(2)[Opacity]属性:设置快捷菜单的透明度.取值范围为0%~100%,默认值为100%,即不透明.注意:该属性只能在代码中才能看到.
2.常用的基本事件
(1)ItemClicked事件:快捷菜单中的任何一个菜单项被单击时触发的操作.
(2)Opening事件:快捷菜单打开时触发的操作.
项目二 工具栏和状态栏
例5-3在例二的基础上制作一个如图所示工具栏
操作步骤:
1.在工具箱中找到Toolstrip控件,如图所示,双击toolstrip控件,把该控件加入到窗体的控件组上。
2.选择需要添加的工具栏项目类型,如图所示,我们依次添加7个ToolStripButton控件,两个ToolStripComboBox控件,3个ToolStripSeparator控件。
3.设置各控件属性如下
控件名 | 属性 | 值 |
ToolStripButton1 |
|
|
ToolStripButton2 |
|
|
ToolStripButton3 |
|
|
选择要添加的工具栏项目 |
单击此处,列出可供选择的控件类型 |
|
|
ToolStrip控件
ToolStrip控件是一个用于创建工具栏、菜单结构和状态栏的容器控件。ToolStrip直接用于工具栏,还可以用作MenuStrip和StatusStrip控件的基类。
ToolStrip控件在用于工具栏时,是为Windows应用程序添加工具栏,工具栏一般由多个按钮,标签、组合框等排列组成,通过这些项可以快速地执行程序提供的一些常用命令,比使用菜单选择更加方便快捷。
Windows窗体中添加一个ToolStrip控件后,窗体顶端会出现一个工具栏,单击工具栏上的小箭头,弹出下拉菜单,其中每一项都是可以使用在工具栏上的项类型,常用的有Button(按钮),ComboBox(下拉框)和TextBox(文本框)等控件,单击某项即可添加到工具栏上.
当然,也可以通过ToolStrip控件的[Items]属性调用[项集合编辑器]对话框完成工具栏的编辑,ToolStrip控件的常用属性和事件与MenuStrip控件基本相同,工具栏上各项的属性和事件与MenuStrip控件中的菜单项基本相同,这里就不多讲了。
例5-4在例三的基础上制作一个如图所示状态栏
操作步骤:
1.在工具箱中找到Toolstrip控件,双击toolstrip控件,把该控件加入到窗体的控件组上。
2.选择需要添加的工具栏项目类型如图所示,我们添加两个ToolStripStatusLabel控件
选择要添加的状态栏项目 |
单击此处,列出可供选择的控件类型 |
3.添加代码如下:
Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ToolStripStatusLabel1.Text = Now
End Sub
Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
ToolStripStatusLabel2.Text = Space(3) & "共计" & RichTextBox1.Text.Length & "字"
End Sub
支撑知识:
StatusStrip 控件主要出现在当前Window窗体的底部,一般使用文本和图像向用户显示应用程序当前状态的信息。StatusStrip 控件允许添加的控件包括:StatusLabel控件(添加标签控件),ProgressBar控件(进度条控件),DropDownButton控件(下拉列表控件),以及SplitButton控件(分割控件)