天天看點

Visual Basic .NET 子產品五 菜單欄、工具欄、狀态欄(文章在資源/習題/裡)子產品五 菜單欄、工具欄、狀态欄

Visual Basic .NET 教程

子產品五 菜單欄、工具欄、狀态欄

能力目标:能夠設計、建立和使用菜單、工具欄和狀态欄

知識目标:掌握菜單控件、工具欄控件和狀态欄控件常用的屬性、方法和事件

一個典型的Windows應用程式必然包含菜單、工具欄和狀态欄,使用者通過單擊菜單中的菜單項,來實作應用程式所提供的功能,使用者也可以通過單擊工具欄上的工具按鈕,來實作應用程式中的常用的主要功能,狀态欄主要用于顯示應用程式目前的狀态等資訊。菜單、工具欄和狀态欄的使用,可以使應用程式的界面友好,友善使用者的使用。

項目一 菜單制作

例5-1設計制作一個如圖所示的下拉菜單應用程式

圖一檔案菜單

設計步驟:

1.建立項目vbnet5-1

單擊“檔案”菜單,在出現的下位菜單中,單擊“建立”,再單擊“建立項目”,建立一個項目。項目存放在“H:/VB.net”下,項目名取“VBnet5-1”。項目類型選擇“Visual Basic項目”、模闆選擇“Windows應用程式”,項目名與位置按以上要求改寫,其他選預設值,單擊“确定”按鈕。

圖三 菜單控件

2.添加菜單menustrip控件到窗體

在工具箱中找到菜單控件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控件(分割控件)

繼續閱讀