VB.Net高級窗體

在本章中,我們來學習以下概念和功能應用:

  • 在應用程式中添加菜單和子菜單
  • 在窗體中添加剪切,複製和粘貼功能
  • 錨定和停靠控件在窗體中
  • 模態窗體

在應用程式中添加菜單和子菜單

傳統上,MenuMainMenuContextMenuMenuItem類用於在Windows應用程式中添加菜單,子菜單和上下文菜單。
現在,使用MenuStripToolStripMenuItemToolStripDropDownToolStripDropDownMenu控件替換並添加功能到以前版本的菜單相關的控件。但是,為了向後相容和將來使用,保留了舊的控制類。

先使用舊版本控件創建一個典型的Windows主菜單欄和子菜單,因為這些控件在舊應用程式中仍然有很多用處。

下麵是一個例子中,顯示了如何創建菜單欄菜單項:檔,編輯,視圖和專案。檔菜單有子菜單新建,打開和保存。

雙擊窗體並將下麵的代碼放在打開的窗口中,參考以下代碼的實現(專案:MenusSubMenus) -

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'defining the main menu bar
        Dim mnuBar As New MainMenu()
        'defining the menu items for the main menu bar
        Dim myMenuItemFile As New MenuItem("&檔")
        Dim myMenuItemEdit As New MenuItem("&編輯")
        Dim myMenuItemView As New MenuItem("&查看")
        Dim myMenuItemProject As New MenuItem("&工程")

        'adding the menu items to the main menu bar
        mnuBar.MenuItems.Add(myMenuItemFile)
        mnuBar.MenuItems.Add(myMenuItemEdit)
        mnuBar.MenuItems.Add(myMenuItemView)
        mnuBar.MenuItems.Add(myMenuItemProject)

        ' defining some sub menus
        Dim myMenuItemNew As New MenuItem("&新建")
        Dim myMenuItemOpen As New MenuItem("&打開")
        Dim myMenuItemSave As New MenuItem("&保存")

        'add sub menus to the File menu
        myMenuItemFile.MenuItems.Add(myMenuItemNew)
        myMenuItemFile.MenuItems.Add(myMenuItemOpen)
        myMenuItemFile.MenuItems.Add(myMenuItemSave)

        'add the main menu to the form
        Me.Menu = mnuBar

        ' Set the caption bar text of the form.
        Me.Text = "Menu&SubMenu示例 - xuhuhu.com"
    End Sub
End Class

當上面的代碼執行並使用Microsoft Visual Studio工具欄上的“開始”按鈕運行時,它將顯示以下窗口:

Windows窗體包含一組豐富的類,用於創建具有現代外觀和外觀的自定義菜單。 MenuStripToolStripMenuItemContextMenuStrip控件用於高效地創建菜單欄和上下文菜單。

點擊以下鏈接查看詳細資訊:

編號 控件 描述
1 MenuStrip 它為窗體提供了一個菜單系統。
2 ToolStripMenuItem 它表示在MenuStripContextMenuStrip上顯示的可選選項。 ToolStripMenuItem控件替換並添加了以前版本的MenuItem控件的功能。
3 ContextMenuStrip 它代表一個快捷菜單。

在窗體中添加剪切,複製和粘貼功能

ClipBoard類公開的方法用於在應用程式中添加剪切,複製和粘貼功能。 ClipBoard類提供了在系統剪貼板上放置數據和從中檢索數據的方法。

它有以下常用的方法:

編號 方法 描述
1 Clear 刪除剪貼板中的所有數據。
2 ContainsData 指示剪貼板上的數據是否處於指定格式或可以轉換為該格式。
3 ContainsImage 指示剪貼板上的數據是位圖格式還是可以轉換為該格式。
4 ContainsText 指示剪貼板上是否有TextUnicodeText格式的數據,具體取決於操作系統。
5 GetData 以指定的格式從剪貼板中檢索數據。
6 GetDataObject 檢索系統剪貼板上當前的數據。
7 GetImage 從剪貼板中檢索圖像。
8 GetText 根據操作系統,以TextUnicodeText格式從剪貼板中檢索文本數據。
9 GetText(TextDataFormat) 以指定的TextDataFormat值指定的格式從剪貼板中檢索文本數據。
11 SetData 清除剪貼板,然後以指定的格式添加數據。
12 SetText(String) 清除剪貼板,然後根據操作系統,以TextUnicodeText格式添加文本數據。

以下一個例子,它顯示如何使用Clipboard類的方法剪切,複製和粘貼數據。參考以下步驟:

  • 在窗體上添加一個富文本框控件和三個按鈕控件。
  • 將按鈕的Text屬性分別更改為“剪切”“複製”“粘貼”

雙擊按鈕在代碼編輯器中添加以下代碼(專案:Clipboard):

Imports System.Windows.Forms.Clipboard

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) _
     Handles MyBase.Load
        ' Set the caption bar text of the form.
        Me.Text = "剪切-複製-粘貼 - xuhuhu.com"
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim ClipboardData As New DataObject()
        ClipboardData.SetData(DataFormats.Rtf, RichTextBox1.Rtf)
        ClipboardData.SetData(DataFormats.Text, RichTextBox1.Text)
        My.Computer.Clipboard.SetDataObject(ClipboardData)
        RichTextBox1.SelectedText = ""
    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim ClipboardData As New DataObject()
        ClipboardData.SetData(DataFormats.Rtf, RichTextBox1.Rtf)
        ClipboardData.SetData(DataFormats.Text, RichTextBox1.Text)
        My.Computer.Clipboard.SetDataObject(ClipboardData)
    End Sub
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim iData As IDataObject
        iData = My.Computer.Clipboard.GetDataObject()
        If (iData.GetDataPresent(DataFormats.Text)) Then
            RichTextBox1.SelectedText = iData.GetData(DataFormats.Text)
        Else
            RichTextBox1.SelectedText = ""
        End If
    End Sub
End Class

當上面的代碼執行並使用Microsoft Visual Studio工具欄上的“開始”按鈕運行時,它將顯示以下窗口:

輸入一些文字並檢查按鈕的工作情況。

在窗體中錨定和停靠控件

錨定可將控件的錨點位置設置為其容器控件的邊緣,例如窗體。 Control類的Anchor屬性可設置這個屬性的值。Anchor屬性獲取或設置控件綁定到的容器的邊,並確定控件的父級調整大小。

當將控件錨定到窗體時,控件將在窗體大小調整後保持其與窗體邊緣及其錨定位置的距離。

可以從“屬性”窗口中設置控件的“錨點”屬性值:

例如,在窗體中添加一個Button控件,並將其Anchor屬性設置為BottomRight。 運行此窗體來查看Button控件相對於窗體的原始位置。如下圖所示 -

現在,當拉伸窗體放大時,Button和窗體右下角之間的距離保持不變。

停靠控制裝置將其對接到其容器的邊緣之一。 在對接中,控制器完全填充容器的某個區域。
Control類的Dock屬性執行此操作。 Dock屬性獲取或設置哪個控件邊框停靠在其父控件上,並確定如何使用其父控件調整大小。

可以從“屬性”窗口中設置控件的Dock屬性值為Bottom

例如,在窗體上添加一個Button控件,並將其Dock屬性設置為Bottom。運行此窗體來查看此Button控件相對於窗體的原始位置。

現在,當拉伸窗體的時候,按鈕就會隨著窗體的大小自動調整。

模態窗體

模態窗體是在繼續使用其他應用程式之前需要關閉或隱藏的窗體。所有對話框都是模態形式。MessageBox控件也是一個模態窗體。

可以通過兩種方式調用模態窗體:

  • 調用ShowDialog方法
  • 調用Show方法

舉一個例子,下麵創建一個模式窗體:一個對話框。參考以下步驟:

  • Form1添加到應用程式,並將兩個標籤和一個按鈕控件添加到Form1中。
  • 將第一個標籤和按鈕的Text屬性分別更改為“歡迎使用許虎虎”“輸入你的名字”。保持第二個標籤的Text屬性為空。設計視圖效果如下 -
  • 在“解決方案資源管理器”中,找到專案名稱,然後右鍵點擊,在彈出的菜單中選擇:添加->Windows窗體,添加一個新的Windows窗體:Form2,並將兩個按鈕,一個標籤和一個文本框添加到Form2中。
  • 將按鈕的Text屬性分別更改為“確定”“取消”。 將標籤的Text屬性更改為“輸入您的姓名:”
  • Form2FormBorderStyle屬性設置為FixedDialog,給它一個對話框邊框。
  • Form2ControlBox屬性設置為False
  • Form2ShowInTaskbar屬性設置為False
  • “確定”按鈕的DialogResult屬性設置為OK,並將“取消”按鈕設置為Cancel

最終設計的視圖效果如下 -

Form2.vb添加下麵的代碼:

Public Class Form2
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        AcceptButton = Button1
        CancelButton = Button2
    End Sub
End Class

Form1.vb添加下麵的代碼:

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) _
   Handles Button1.Click
        Dim frmSecond As Form2 = New Form2()
        If frmSecond.ShowDialog() = DialogResult.OK Then
            Label2.Text = frmSecond.TextBox1.Text
        End If
    End Sub
End Class

當上面的代碼執行並使用Microsoft Visual Studio工具欄上的“開始”按鈕運行時,它將顯示以下窗口:

點擊“輸入你的名字”按鈕顯示第二個窗體:

點擊“確定”按鈕,將控制和資訊從模態窗體恢復到第一個窗體,結果如下:


上一篇: VB.Net對話框 下一篇: VB.Net正則運算式