VB.Net-高级表单
在本章中,我们将研究以下概念:
在应用程序中添加菜单和子菜单
 
在表单中添加剪切,复制和粘贴功能
 
锚定和对接控制在一种形式
 
模态形式
 
在应用程序中添加菜单和子菜单
传统上,菜单,MainMenu的,文本菜单和菜单项类用于在的Windows应用程序中添加菜单,子菜单和上下文菜单。  
现在,MenuStrip中,ToolStripMenuItem,ToolStripDropDown和ToolStripDropDownMenu控件替换和添加功能到以前版本的菜单相关的控件。但是,旧的控制类保留为向后兼容和未来使用。  
让我们首先使用旧版本控件创建典型的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工具栏上的“开始”按钮执行并运行上述代码时,将显示以下窗口:  

Windows包含一组丰富的类,用于创建您自己的具有现代外观,外观和感觉的自定义菜单。MenuStrip,ToolStripMenuItem,ContextMenuStrip用于有效地创建菜单栏和菜单。  
点击以下链接查看他们的详细信息:
| SN | 
控制 | 
说明 | 
| 1 | 
菜单条 | 
它为表单提供了一个菜单系统。 | 
| 2 | 
ToolStripMenuItem | 
它表示在MenuStrip或ContextMenuStrip上显示的可选选项。 ToolStripMenuItem控件替换和添加以前版本的MenuItem控件的功能。   | 
| 2 | 
ContextMenuStrip | 
它代表一个快捷菜单。   | 
在表单中添加剪切,复制和粘贴功能
ClipBoard类公开的方法用于在应用程序中添加剪切,复制和粘贴功能。ClipBoard类提供了在系统顶部放置数据和检索数据的方法。  
它具有以下常用的方法:
| SN | 
方法名称 | 
说明 | 
| 1 | 
明确 | 
从剪贴板中删除所有数据。 | 
| 2 | 
包含数据 | 
指示剪贴板上是否存在指定格式或可以转换为该格式的数据。 | 
| 3 | 
ContainsImage | 
指示剪贴板上是否存在位图格式的数据或可以将其转换为该格式的数据。 | 
| 4 | 
ContainsText | 
指示剪贴板上是否存在Text或UnicodeText格式的数据,具体取决于操作系统。 | 
| 5 | 
获取数据 | 
从剪贴板以指定格式检索数据。 | 
| 6 | 
GetDataObject | 
检索系统剪贴板上当前的数据。 | 
| 7 | 
getImage | 
从剪贴板中检索图像。 | 
| 8 | 
getText | 
从文本或UnicodeText格式中中检索文本数据,根据不同的操作系统。 | 
| 9 | 
getText(TextDataFormat) | 
从由指定TextDataFormat值指示的格式添加中检索文本数据。 | 
| 10 | 
设定数据 | 
清除剪贴板,然后以指定的格式添加数据。 | 
| 11 | 
setText (字符串) | 
清除剪贴板,然后添加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工具栏上的“开始”按钮执行并运行上述代码时,将显示以下窗口:

输入一些文本并检查按钮的工作方式。
锚定和停靠在窗体中的控件  
锚定允许您设置控件的定位点位置到其容器的控件,例如,窗体的边缘。控件类Anchor属性允许您设置此属性的值。Anchor属性获取或设置一个控件绑定和确定如何调整控件的大小与它的父容器的边缘。
当你锚定到窗体控件时,该控件维护它距离边缘的形式状语从句:其锚的位置,当窗体调整。
你可以从属性窗口显示设置控件的锚属性值地︰

输入一些文本并检查按钮的工作方式。
例如,让我们在表单上添加一个按钮控件,将其锚定属性设置为底部,右。运行此选项以查看按钮控件相对于之上的原始位置。

现在,当拉伸伸长时,Button和合并右下角之间的距离保持不变。

在对接中,控制完全填充容器的某些区域。Controlclass  
的Dock属性执行此操作。Dock属性获取或设置某些控件边框停靠到其父控件,并确定如何使用其父控件调整控件大小。  
您可以从“属性”窗口设置控件的Dock属性值:

例如,让我们在表单上添加一个按钮控件,将其坞属性设置为Bottom。运行此选项以查看按钮控件相对于之上的原始位置。

现在,当你拉伸窗体时,Button会调整窗体的大小。

模式窗体  
模式窗体是需要关闭或隐藏的窗体,然后才能继续使用其余应用程序。 所有对话框都是模态窗体。 MessageBox也是一种模态形式。
您可以通过两种方式调用模式窗体:
让我们举一个例子,我们将创建一个模态形式,一个对话框。 执行以下步骤:
将表单Form1添加到您的应用程序,并向Form1添加两个标签和一个按钮控件
 
将第一个标签和按钮的文本属性分别更改为“欢迎使用教程点”和“输入您的名称”。 将第二个标签的文本属性保留为空。

 
添加一个新的Windows窗体,Form2,并向Form2添加两个按钮,一个标签和一个文本框。
 
将按钮的文本属性分别更改为“确定”和“取消”。 将标签的文本属性更改为“输入您的姓名:”。
 
将Form2的FormBorderStyle属性设置为FixedDialog,为其提供对话框边框。
 
将Form2的ControlBox属性设置为False。
 
将Form2的ShowInTaskbar属性设置为False。
 
将OK按钮的DialogResult属性设置为OK,将Cancel按钮设置为Cancel。
 

在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工具栏上的“开始”按钮执行并运行上述代码时,将显示以下窗口:

点击“输入您的姓名”按钮显示第二个表单:

单击确定按钮将控制和信息从模态形式返回到先前的形式:
