4.3 StatusBar控件
该控件用作表示普通窗体的状态栏,Word程序底部的状态栏便是该控件的一个应用实例。
4.3.1 StatusBar控件简介
StatusBar控件用作窗体中的一块区域,通常显示在窗口的底部,应用程序可在该区域中显示各种状态信息。StatusBar控件可包含状态栏面板,用以显示指示状态的图标,或者一系列指示进程正在执行的动画图标。
例如,在鼠标滚动到超级链接时,Internet Explorer使用状态栏指示某个页面的URL;Microsoft Word使用状态栏为用户提供有关页位置、节位置和编辑模式(如改写和修订跟踪)的信息;Visual Studio使用状态栏提供区分上下文的信息,如告诉用户如何操纵可停靠的窗口,使其停靠或浮动。
用户可通过将StatusBar控件的ShowPanels属性设置为Fals(e默认值),并将状态栏的Text属性设置为希望出现在状态栏中的文本,在状态栏中显示一个消息;通过将ShowPanels属性设置为True并使用StatusBarPanelCollection类的Add方法,可将状态栏分割为多个面板以显示一种以上类型的信息。下面来看一下StatusBar控件的常见用法。
4.3.2 确定单击了哪个面板
有时开发人员在Windows窗体StatusBar控件中添加了多个面板,并想要通过对StatusBar控件进行编程来响应用户的单击操作,这时可以使用PanelClick事件中的Select Case语句。该事件包含一个参数(面板参数),该参数包含对单击的StatusBarPanel对象的引用。使用该引用可以确定单击的面板的索引,从而可以相应地进行编程。
在PanelClick事件处理程序中,使用Select Case语句来确定单击了哪个面板,方法是在事件参数中检查所单击面板的索引。
注意
要确定StatusBar控件的ShowPanels属性已设置为True。
例如,下面的代码假定窗体上有一个StatusBar控件(StatusBar1)和两个StatusBarPanel控件(StatusBarPanel1和StatusBarPanel2)。
Private Sub StatusBar1_PanelClick(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.StatusBarPanelClickEventArgs) Handles StatusBar1.PanelClick
Select Case StatusBar1.Panels.IndexOf(e.StatusBarPanel)
Case 0
MessageBox.Show("You have clicked Panel One.")
Case 1
MessageBox.Show("You have clicked Panel Two.")
End Select
End Sub
4.3.3 设置状态栏面板的大小
StatusBar控件中的StatusBarPanel类的每个实例都有大量动态属性,这些属性确定它在运行时的宽度和调整大小行为。在VB.NET中有两种方法设置状态栏面板的大小。
1.在设计时设置面板的大小
(1)在“属性”窗口中,通过单击Panel属性来选择该属性。然后单击按钮“”打开“StatusBarPanel集合编辑器”。
(2)在StatusBarPanel集合编辑器右侧窗格中出现的属性窗口中,设置如表4-5所示的所有属性或其中的一部分。
表4-5 集合编辑器右侧窗格中的属性
2.以编程方式设置面板的大小
在编程过程中,可以使用通过StatusBarPanels集合的Panels属性传递的面板索引,设置状态栏面板的AutoSize、MinWidth和Width属性(或这些属性中的任何子集)。示例如下:
Public Sub SetStatusBarPanelSize() ' 创建面板和设置面板的文本属性 StatusBar1.Panels.Add("One") ' 设置面板属性 StatusBar1.Panels(0).AutoSize = StatusBarPanelAutoSize.Spring StatusBar1.Panels(0).Width = 200
' 显示状态栏面板 StatusBar1.ShowPanels = True End Sub