VB.Net - 高階窗體



本章我們將學習以下概念:

  • 在應用程式中新增選單和子選單

  • 在窗體中新增剪下、複製和貼上功能

  • 在窗體中固定和停靠控制元件

  • 模式窗體

在應用程式中新增選單和子選單

傳統上,MenuMainMenuContextMenuMenuItem 類用於在 Windows 應用程式中新增選單、子選單和上下文選單。

現在,MenuStripToolStripMenuItemToolStripDropDownToolStripDropDownMenu 控制元件取代了並增加了以前版本中與選單相關的控制元件的功能。但是,為了向後相容性和將來使用,舊的控制元件類仍然保留。

讓我們首先使用舊版本的控制元件建立一個典型的 Windows 主選單欄和子選單,因為這些控制元件在舊應用程式中仍然被廣泛使用。

以下是一個示例,它演示瞭如何建立一個帶有選單項的選單欄:檔案、編輯、檢視和專案。檔案選單具有子選單新建、開啟和儲存。

雙擊窗體,並將以下程式碼放入開啟的視窗中。

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("&File")
      Dim myMenuItemEdit As New MenuItem("&Edit")
      Dim myMenuItemView As New MenuItem("&View")
      Dim myMenuItemProject As New MenuItem("&Project")

      '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("&New")
      Dim myMenuItemOpen As New MenuItem("&Open")
      Dim myMenuItemSave As New MenuItem("&Save")

      '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 = "tutorialspoint.com"
   End Sub
End Class

當使用 Microsoft Visual Studio 工具欄上的“啟動”按鈕執行和執行上述程式碼時,將顯示以下視窗:

VB.Net Menu Example

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

單擊以下連結以檢視其詳細資訊:

序號 控制元件和描述
1

MenuStrip

它為窗體提供菜單系統。

2

ToolStripMenuItem

它表示顯示在MenuStripContextMenuStrip 上的可選擇選項。ToolStripMenuItem 控制元件取代了並增加了以前版本中 MenuItem 控制元件的功能。

3

ContextMenuStrip

它表示快捷選單。

在窗體中新增剪下、複製和貼上功能

ClipBoard 類公開的方法用於在應用程式中新增剪下、複製和貼上功能。ClipBoard 類提供將資料放置到系統剪貼簿和從系統剪貼簿檢索資料的方法。

它具有以下常用方法:

序號 方法名稱和描述
1

Clear

刪除剪貼簿中的所有資料。

2

ContainsData

指示剪貼簿中是否存在指定格式的資料,或者是否可以轉換為該格式。

3

ContainsImage

指示剪貼簿中是否存在 Bitmap 格式的資料,或者是否可以轉換為該格式。

4

ContainsText

指示剪貼簿中是否存在 Text 或 UnicodeText 格式的資料,具體取決於作業系統。

5

GetData

以指定格式從剪貼簿檢索資料。

6

GetDataObject

檢索當前位於系統剪貼簿上的資料。

7

GetImage

從剪貼簿檢索影像。

8

GetText

以 Text 或 UnicodeText 格式從剪貼簿檢索文字資料,具體取決於作業系統。

9

GetText(TextDataFormat)

以指定 TextDataFormat 值指示的格式從剪貼簿檢索文字資料。

10

SetData

清除剪貼簿,然後以指定格式新增資料。

11

SetText(String)

清除剪貼簿,然後以 Text 或 UnicodeText 格式新增文字資料,具體取決於作業系統。

以下是一個示例,它演示瞭如何使用 Clipboard 類的方法來剪下、複製和貼上資料。請按照以下步驟操作:

  • 在窗體上新增一個富文字框控制元件和三個按鈕控制元件。

  • 將按鈕的 text 屬性分別更改為“剪下”、“複製”和“貼上”。

  • 雙擊按鈕,在程式碼編輯器中新增以下程式碼:

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 = "tutorialspoint.com"
   End Sub
   
   Private Sub Button1_Click(sender As Object, e As EventArgs) _ 
      Handles Button1.Click
      Clipboard.SetDataObject(RichTextBox1.SelectedText)
      RichTextBox1.SelectedText = ""
   End Sub
   
   Private Sub Button2_Click(sender As Object, e As EventArgs) _
       Handles Button2.Click
      Clipboard.SetDataObject(RichTextBox1.SelectedText)
   End Sub
   
   Private Sub Button3_Click(sender As Object, e As EventArgs) _
    Handles Button3.Click
      Dim iData As IDataObject
      iData = 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 工具欄上的啟動按鈕執行和執行上述程式碼時,將顯示以下視窗:

VB.Net Cut, Paste, Copy Example

輸入一些文字並檢查按鈕的工作方式。

在窗體中固定和停靠控制元件

固定允許您為控制元件設定一個相對於其容器控制元件(例如窗體)邊緣的固定位置。Control 類的Anchor 屬性允許您設定此屬性的值。Anchor 屬性獲取或設定繫結到控制元件的容器的邊緣,並確定控制元件如何與其父控制元件一起調整大小。

當您將控制元件固定到窗體時,當窗體調整大小時,控制元件會保持與窗體邊緣和其固定位置的距離。

您可以從“屬性”視窗設定控制元件的 Anchor 屬性值:

VB.Net Anchoring of Controls

例如,讓我們在窗體上新增一個 Button 控制元件,並將其 anchor 屬性設定為 Bottom、Right。執行此窗體以檢視 Button 控制元件相對於窗體的原始位置。

VB.Net Anchoring Example

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

VB.Net Anchoring Example

控制元件的停靠是指將其停靠到其容器的某個邊緣。在停靠中,控制元件完全填充容器的某個區域。

Control 類的Dock 屬性執行此操作。Dock 屬性獲取或設定停靠到其父控制元件的控制元件邊框,並確定控制元件如何與其父控制元件一起調整大小。

您可以從“屬性”視窗設定控制元件的 Dock 屬性值:

VB.Net Docking of Controls

例如,讓我們在窗體上新增一個 Button 控制元件,並將其 Dock 屬性設定為 Bottom。執行此窗體以檢視 Button 控制元件相對於窗體的原始位置。

VB.Net Docking Example

現在,當您拉伸窗體時,Button 會隨著窗體一起調整大小。

VB.Net Docking Example

模式窗體

模式窗體是指在您可以繼續使用應用程式的其餘部分之前需要關閉或隱藏的窗體。所有對話方塊都是模式窗體。訊息框也是模式窗體。

您可以透過兩種方式呼叫模式窗體:

  • 呼叫ShowDialog 方法

  • 呼叫Show 方法

讓我們來看一個我們將建立一個模式窗體(對話方塊)的示例。請按照以下步驟操作:

  • 嚮應用程式新增一個窗體 Form1,並向 Form1 新增兩個標籤和一個按鈕控制元件。

  • 將第一個標籤和按鈕的 text 屬性分別更改為“歡迎來到 Tutorials Point”和“輸入您的姓名”。保持第二個標籤的 text 屬性為空白。

    VB.Net Modal Form Example
  • 新增一個新的 Windows 窗體 Form2,並向 Form2 新增兩個按鈕、一個標籤和一個文字框。

  • 將按鈕的 text 屬性分別更改為“確定”和“取消”。將標籤的 text 屬性更改為“輸入您的姓名:”。

  • 將 Form2 的FormBorderStyle 屬性設定為FixedDialog,以賦予其對話方塊邊框。

  • 將 Form2 的ControlBox 屬性設定為 False。

  • 將 Form2 的ShowInTaskbar 屬性設定為 False。

  • 將“確定”按鈕的DialogResult 屬性設定為 OK,將“取消”按鈕的DialogResult 屬性設定為 Cancel。

VB.Net Modal Form Example

在 Form2 的 Form2_Load 方法中新增以下程式碼片段:

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

在 Form1 的 Button1_Click 方法中新增以下程式碼片段:

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

當使用 Microsoft Visual Studio 工具欄上的啟動按鈕執行和執行上述程式碼時,將顯示以下視窗:

VB.Net Modal Form Example

單擊“輸入您的姓名”按鈕將顯示第二個窗體:

VB.Net Modal Form Example

單擊“確定”按鈕將控制權和資訊從模式窗體傳回前一個窗體:

VB.Net Modal Form Example
廣告