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 菜单示例

Windows 窗体包含一组丰富的类,用于创建您自己的具有现代外观、外观和感觉的自定义菜单。MenuStrip 、ToolStripMenuItemContextMenuStrip控件用于有效地创建菜单栏和上下文菜单

单击以下链接查看其详细信息 -

先生。 控制与描述
1

菜单条

它为表单提供了一个菜单系统。

2

工具条菜单项

它代表显示在MenuStripContextMenuStrip上的可选选项。ToolStripMenuItem 控件替换了以前版本的 MenuItem 控件并为其添加了功能。

3

上下文菜单条

它代表一个快捷菜单。

在表单中添加剪切、复制和粘贴功能

ClipBoard类公开的方法用于在应用程序中添加剪切、复制和粘贴功能。ClipBoard 类提供在系统剪贴板上放置数据和从系统剪贴板检索数据的方法。

它有以下常用方法 -

先生。 方法名称和描述
1

清除

从剪贴板中删除所有数据。

2

包含数据

指示剪贴板上是否存在指定格式的数据或可以转换为该格式的数据。

3

包含图像

指示剪贴板上是否存在位图格式的数据或可以转换为该格式的数据。

4

包含文本

指示剪贴板上是否存在 Text 或 UnicodeText 格式的数据,具体取决于操作系统。

5

获取数据

以指定格式从剪贴板检索数据。

6

获取数据对象

检索系统剪贴板上当前的数据。

7

获取图像

从剪贴板检索图像。

8

获取文本

从剪贴板检索文本或 UnicodeText 格式的文本数据,具体取决于操作系统。

9

获取文本(文本数据格式)

以指定的 TextDataFormat 值指示的格式从剪贴板检索文本数据。

10

设置数据

清除剪贴板,然后以指定格式添加数据。

11

设置文本(字符串)

清除剪贴板,然后添加 Text 或 UnicodeText 格式的文本数据,具体取决于操作系统。

下面是一个示例,展示了如何使用 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 = "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 剪切、粘贴、复制示例

输入一些文本并检查按钮的工作原理。

在表单中锚定和停靠控件

锚定允许您将控件的锚定位置设置到其容器控件(例如窗体)的边缘。Control 类的Anchor属性允许设置该属性的值。Anchor 属性获取或设置控件绑定到的容器的边缘,并确定控件如何随其父控件调整大小。

将控件锚定到窗体时,当调整窗体大小时,控件将保持与窗体边缘的距离及其锚定位置。

您可以从“属性”窗口设置控件的 Anchor 属性值 -

VB.Net 控件锚定

例如,让我们在窗体上添加一个 Button 控件,并将其锚点属性设置为 Bottom、Right。运行此窗体以查看 Button 控件相对于窗体的原始位置。

VB.Net 锚定示例

现在,当您拉伸表单时,按钮和表单右下角之间的距离保持不变。

VB.Net 锚定示例

控件的停靠意味着将其停靠到其容器的边缘之一。在对接时,控件完全填充容器的某些区域。

Control 类的 Dock 属性执行此操作Dock 属性获取或设置哪些控件边框停靠到其父控件,并确定控件如何随其父控件调整大小。

您可以从“属性”窗口设置控件的 Dock 属性值 -

VB.Net 控件对接

例如,让我们在窗体上添加一个 Button 控件并将其 Dock 属性设置为 Bottom。运行此窗体以查看 Button 控件相对于窗体的原始位置。

VB.Net对接示例

现在,当您拉伸表单时,按钮会随表单调整自身大小。

VB.Net对接示例

情态形式

模态表单是那些在您可以继续使用应用程序的其余部分之前需要关闭或隐藏的表单。所有对话框都是模式形式。MessageBox 也是一种模式形式。

您可以通过两种方式调用模态形式 -

  • 调用ShowDialog方法

  • 调用显示方法

让我们举一个例子,我们将创建一个模式表单,一个对话框。采取以下步骤 -

  • 将窗体 Form1 添加到您的应用程序,并向 Form1 添加两个标签和一个按钮控件

  • 将第一个标签和按钮的文本属性分别更改为“欢迎使用教程点”和“输入您的姓名”。将第二个标签的文本属性保留为空白。

    VB.Net 模态表单示例
  • 添加一个新的 Windows 窗体 Form2,并向 Form2 添加两个按钮、一个标签和一个文本框。

  • 将按钮的文本属性分别更改为“确定”和“取消”。将标签的文本属性更改为“输入您的姓名:”。

  • 将 Form2 的FormBorderStyle属性设置为FixDialog,为其提供对话框边框。

  • 将Form2 的ControlBox属性设置为 False。

  • 将Form2 的ShowInTaskbar属性设置为 False。

  • 将“确定”按钮的DialogResult属性设置为“确定”,将“取消”按钮设置为“取消”。

VB.Net 模态表单示例

在 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 模态表单示例

单击“输入您的姓名”按钮将显示第二种形式 -

VB.Net 模态表单示例

单击“确定”按钮会将控制和信息从模式表单返回到先前的表单 -

VB.Net 模态表单示例