Visual Basic.NET+SQL Server全程指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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