VB.Net - 高级表单
在本章中,我们来学习以下概念 −
在应用程序中添加菜单和子菜单
在表单中添加剪切、复制和粘贴功能
在表单中锚定和停靠控件
模态形式
在应用程序中添加菜单和子菜单
传统上,Menu、MainMenu、ContextMenu 和 MenuItem 类用于添加菜单、子菜单 - 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 控件用于高效地创建菜单栏和上下文菜单。
点击以下链接查看详细信息 −
序号 | 控件与描述 |
---|---|
1 |
它为表单提供了一个菜单系统。 |
2 |
它表示 MenuStrip 或 ContextMenuStrip 上显示的可选选项。 ToolStripMenuItem 控件替换了以前版本的 MenuItem 控件并为其添加了功能。 |
3 |
它代表一个快捷菜单。 |
在表单中添加剪切、复制和粘贴功能
ClipBoard 类公开的方法用于在应用程序中添加剪切、复制和粘贴功能。 ClipBoard 类提供了在系统剪贴板上放置数据和从系统剪贴板检索数据的方法。
常用的方法有以下几种 −
序号 | 方法名称 & 描述 |
---|---|
1 |
Clear 从剪贴板中删除所有数据。 |
2 |
ContainsData 指示剪贴板上是否存在指定格式的数据或可以转换为该格式的数据。 |
3 |
ContainsImage 指示剪贴板上是否存在位图格式的数据或可以转换为该格式的数据。 |
4 |
ContainsText 指示剪贴板上是否存在 Text 或 UnicodeText 格式的数据,具体取决于操作系统。 |
5 |
GetData 以指定格式从剪贴板检索数据。 |
6 |
GetDataObject 检索系统剪贴板上当前的数据。 |
7 |
GetImage 从剪贴板检索图像。 |
8 |
GetText 从剪贴板检索文本或 UnicodeText 格式的文本数据,具体取决于操作系统。 |
9 |
GetText(TextDataFormat) 以指定的 TextDataFormat 值指示的格式从剪贴板检索文本数据。 |
10 |
SetData 清除剪贴板,然后以指定格式添加数据。 |
11 |
SetText(String) 清除剪贴板,然后添加 Text 或 UnicodeText 格式的文本数据,具体取决于操作系统。 |
下面是一个示例,展示了如何使用 Clipboard 类的方法剪切、复制和粘贴数据。 采取以下步骤 −
在窗体上添加一个富文本框控件和三个按钮控件。
将按钮的文本属性分别更改为"剪切"、"复制"和"粘贴"。
双击按钮在代码编辑器中添加以下代码 −
Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) _ Handles MyBase.Load ' 设置表单的标题栏文本。 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 工具栏上的开始按钮运行时,它将显示以下窗口 −
输入一些文本并检查按钮的工作原理。
在表单中锚定和停靠控件
锚定允许您将控件的锚定位置设置到其容器控件(例如窗体)的边缘。 Control 类的 Anchor 属性允许您设置该属性的值。 Anchor 属性获取或设置控件绑定到的容器的边缘,并确定如何随其父控件调整控件的大小。
当您将控件锚定到窗体时,当调整窗体大小时,该控件将保持与窗体边缘的距离及其锚定位置。
您可以从"属性"窗口设置控件的 Anchor 属性值 −
例如,让我们在窗体上添加一个 Button 控件,并将其锚点属性设置为 Bottom、Right。 运行此窗体以查看 Button 控件相对于窗体的原始位置。
现在,当您拉伸表单时,按钮和表单右下角之间的距离保持不变。
控件的停靠意味着将其停靠到其容器的边缘之一。 停靠时,控件完全填充容器的特定区域。
Control 类的 Dock 属性执行此操作。 Dock 属性获取或设置哪些控件边框停靠到其父控件,并确定如何随其父控件调整控件的大小。
您可以从"属性"窗口设置控件的 Dock 属性值 −
例如,让我们在窗体上添加一个 Button 控件并将其 Dock 属性设置为 Bottom。 运行此窗体以查看 Button 控件相对于窗体的原始位置。
现在,当您拉伸表单时,按钮会随表单调整自身大小。
模态形式
模态表单是那些在您可以继续使用应用程序的其余部分之前需要关闭或隐藏的表单。 所有对话框都是模式形式。 MessageBox 也是一种模式形式。
可以通过两种方式调用模态表单 −
调用ShowDialog方法
调用Show方法
让我们举一个例子,我们将创建一个模式表单,一个对话框。 采取以下步骤 −
向您的应用程序添加一个表单 Form1,并向 Form1 添加两个标签和一个按钮控件
将第一个标签和按钮的文本属性分别更改为"欢迎使用教程"和"输入您的姓名"。 将第二个标签的文本属性保留为空白。
添加一个新的 Windows 窗体 Form2,并向 Form2 添加两个按钮、一个标签和一个文本框。
将按钮的文本属性分别更改为"确定"和"取消"。 将标签的文本属性更改为"输入您的姓名:"。
将 Form2 的 FormBorderStyle 属性设置为 FixedDialog,为其提供对话框边框。
将 Form2 的 ControlBox 属性设置为 False。
将 Form2 的 ShowInTaskbar 属性设置为 False。
将"确定"按钮的 DialogResult 属性设置为"确定",将"取消"按钮设置为"取消"。
在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 工具栏上的开始按钮运行时,它将显示以下窗口 −
单击"输入您的姓名"按钮将显示第二个表单 −
单击"确定"按钮会将控件和信息从模态表单返回到先前的表单−