18、Visual Basic .NET 消息框与对话框开发指南

Visual Basic .NET 消息框与对话框开发指南

1. 消息框的创建与使用

在开发过程中,消息框是一个常用的工具。创建并显示消息框可以使用 MessageBox 类的 Show 方法。要确定用户在消息框中点击了哪个按钮,可以使用 Show 方法的返回值。

2. 消息框与对话框的区别

消息框虽然是一个很有价值的工具,但它有一定的局限性,只能包含文本、按钮、图标和标题。当需要从用户那里获取的信息比较复杂时,消息框就显得不够用了。这时可以创建一个自定义的、更复杂的对话框。以下是消息框和对话框的基本区别:
| 类型 | 特点 |
| ---- | ---- |
| 消息框 | 内置在 Visual Basic 中,功能相对简单,仅包含文本、按钮、图标和标题 |
| 对话框 | 由程序员创建,可以添加额外的控件,如文本框等 |

3. 创建对话框的步骤

下面通过一个具体的项目来介绍如何创建一个对话框,该对话框可以让用户更改调用窗体的标题。
1. 创建 Windows 应用程序 :启动开发环境,创建一个新的 Windows 应用程序项目。
2. 设置窗体的起始位置 :使用属性窗口,将窗体的 StartPosition 属性从默认的 WindowsDefaultLocation 更改为 CenterScreen ,使窗体在屏幕上居中显示。 FormStartPosition 枚举的成员及描述如下表所示:
| 成员名称 | 描述 |
| ---- | ---- |
| CenterParent | 窗体在其父窗体的边界内居中 |
| CenterScreen | 窗体在当前显示器上居中,并具有窗体大小指定的尺寸 |
| Manual | 窗体的位置和大小决定其起始位置 |
| WindowsDefaultBounds | 窗体位于 Windows 默认位置,并具有由 Windows 默认值确定的边界 |
| WindowsDefaultLocation | 窗体位于 Windows 默认位置,并具有窗体大小指定的尺寸 |
3. 添加按钮到窗体 :从工具箱中拖动一个按钮到窗体上。
4. 更改按钮的属性 :使用属性窗口更改按钮的以下属性:
- Name :从 Button1 更改为 btnNewCaption
- Text :从 Button1 更改为 New Caption
5. 添加第二个窗体作为对话框 :使用 Project | Add Windows Form 菜单命令,在弹出的 Add New Item 对话框中,可以保留新窗体的默认名称 form2.vb ,然后点击 Open 按钮。
6. 设置第二个窗体的属性 :使用属性窗口更改 Form2 的以下属性:
- Text :从 Form2 更改为 Dialog ,以便有一个视觉提示,表明这是一个对话框。
- ControlBox :从默认的 True 更改为 False ,这样可以消除窗口右上角的关闭、最小化和最大化按钮,以及左上角的系统菜单。
- StartPosition :从默认的 WindowsDefaultLocation 更改为 CenterParent ,使对话框在主窗体上居中。
- FormBorderStyle :从默认的 Sizable 更改为 FixedDialog ,使窗体更像一个对话框。 FormBorderStyle 枚举的成员及描述如下表所示:
| 成员名称 | 描述 |
| ---- | ---- |
| Fixed3D | 固定的三维边框 |
| FixedDialog | 粗的、固定的对话框样式边框 |
| FixedSingle | 固定的单线条边框 |
| FixedToolWindow | 不可调整大小的工具窗口边框 |
| None | 无边框 |
| Sizable | 可调整大小的边框 |
| SizableToolWindow | 可调整大小的工具窗口边框 |
7. 添加按钮到第二个窗体 :从工具箱中拖动一个按钮到第二个窗体上。
8. 更改按钮的属性 :使用属性窗口更改按钮的以下属性:
- Name :从 Button1 更改为 btnOK
- Text :更改为 OK
- DialogResult :从下拉列表中选择 OK
9. 添加第二个按钮到第二个窗体 :再次从工具箱中拖动一个按钮到第二个窗体上。
10. 更改第二个按钮的属性 :使用属性窗口更改按钮的以下属性:
- Name :从 Button1 更改为 btnCancel
- Text :更改为 Cancel
- DialogResult :从下拉列表中选择 Cancel
11. 设置第二个窗体的接受和取消按钮 :使用属性窗口,通过下拉列表更改第二个窗体的以下属性:
- AcceptButton :选择 btnOK
- CancelButton :选择 btnCancel
12. 添加文本框到第二个窗体 :从工具箱中拖动一个文本框到第二个窗体上。
13. 更改文本框的属性 :使用属性窗口更改文本框的以下属性:
- Name :更改为 txtNewCaption
- Text :删除默认文本,使其为空。
14. 添加代码到第二个窗体 :在第二个窗体的 #End Region 语句后添加以下代码:

Public Property Caption() As String
    Get
        Caption = txtNewCaption.Text
    End Get
    Set(ByVal Value As String)
    End Set
End Property
  1. 添加代码到第一个窗体的按钮点击事件 :在第一个窗体的 btnNewCaption 按钮的 Click 事件中添加以下代码:
Private Sub btnNewCaption_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNewCaption.Click
    Dim frmCaption As New Form2()
    frmCaption.ShowDialog()
    If frmCaption.DialogResult = DialogResult.OK Then
        Me.Text = frmCaption.Caption
    End If
End Sub
4. 运行项目

运行项目后,点击第一个窗体上的 New Caption 按钮,在第二个窗体中输入一些文本。如果点击 OK ,第二个窗体将关闭,第一个窗体的标题将更改为在第二个窗体中输入的文本;如果点击 Cancel ,第二个窗体也会关闭,但第一个窗体的标题不会改变。

5. ShowDialog 方法

Form 对象的 ShowDialog 方法与 MessageBox 类的 Show 方法类似,都会显示调用该方法的窗体。但有几个重要的区别:
- MessageBox 类的 Show 方法显示的是内置窗体,而 Form 对象的 ShowDialog 方法显示的是你创建的窗体,如 Form2 。因此,在使用 ShowDialog 方法显示 Form2 之前,需要显式声明并创建 Form2 的实例:

Dim frmCaption As New Form2()
frmCaption.ShowDialog()
  • 第二个窗体和消息框一样是模态的,即用户在点击第二个窗体的某个按钮关闭它之前,不能返回到主窗体。 MessageBox 类的 Show 方法通过返回 DialogResult 值来指示用户点击的按钮,而 Form 对象的 ShowDialog 方法通过将该值分配给对话框窗体的 DialogResult 属性来指示用户点击的按钮。以下是判断用户点击 OK 按钮的代码示例:
If frmCaption.DialogResult = DialogResult.OK Then
    ' 执行相应操作
End If
6. 公共、私有和作用域

在尝试更改第一个窗体的标题为第二个窗体中输入的文本时,直接使用 Me.Text = frmCaption.txtNewCaption.Text 会出现问题,因为 txtNewCaption 是私有的,在当前上下文中无法访问。在编程中, Private Public 关键字用于控制对象、变量或过程的访问权限:
- 如果一个对象、变量或过程被声明为 Private ,则只能在包含它的窗体的代码模块中访问。
- 如果一个对象、变量或过程被声明为 Public ,则可以在包含它的窗体的代码模块之外访问。

为了解决跨窗体访问属性的问题,可以使用属性过程。

7. 属性过程

属性过程是一种特殊的过程,用于访问和修改对象的属性。它与事件过程有两个显著的区别:
- 事件过程由事件的发生调用,通常由应用程序用户的操作触发;而属性过程由代码显式调用。
- 事件过程中的代码可以执行程序员认为合适的任何操作;而属性过程中的代码有两个专门的目的,即更改或返回属性的值。

属性过程的基本结构如下:

Public Property Caption() As String
    Get
        ' 返回属性值的代码
    End Get
    Set(ByVal Value As String)
        ' 分配属性值的代码
    End Set
End Property

在这个例子中,只实现了 Get 过程,使 txtNewCaption Text 属性在 Form2 外部为只读属性。以下是 Get 过程的具体代码:

Get
    Caption = txtNewCaption.Text
End Get

btnNewCaption 事件过程中,可以通过以下代码将 Form2 txtNewCaption 的文本值分配给 Form1 的标题:

Me.Text = frmCaption.Caption

需要注意的是,调用属性过程时要使用对象的实例,而不是类名。例如,使用 frmCaption.Caption 而不是 Form2.Caption ,否则编译器会报错。

综上所述,通过以上步骤和方法,可以在 Visual Basic .NET 中创建和使用消息框、对话框,并实现跨窗体访问属性的功能。在实际开发中,合理运用这些技术可以提高程序的交互性和用户体验。

Visual Basic .NET 消息框与对话框开发指南

8. 常见问题解答
8.1 消息框与对话框的基本区别

消息框是 Visual Basic 内置的,功能相对简单,只能包含文本、按钮、图标和标题;而对话框是由程序员创建的,可以添加额外的控件,如文本框等,适用于需要获取更复杂信息的场景。

8.2 创建和显示对话框的方法

创建对话框的步骤如下:
1. 创建一个新的 Windows 窗体。
2. 设置窗体的属性,如起始位置、边框样式等。
3. 添加所需的控件,如按钮、文本框等。
4. 设置控件的属性,如名称、文本、对话框结果等。
5. 添加代码来处理控件的事件和实现所需的功能。

显示对话框可以使用 ShowDialog 方法,示例代码如下:

Dim frmCaption As New Form2()
frmCaption.ShowDialog()
8.3 确定用户在对话框中点击的按钮

可以使用对话框窗体的 DialogResult 属性来确定用户点击的按钮。示例代码如下:

If frmCaption.DialogResult = DialogResult.OK Then
    ' 用户点击了 OK 按钮
ElseIf frmCaption.DialogResult = DialogResult.Cancel Then
    ' 用户点击了 Cancel 按钮
End If
9. 总结与建议
9.1 总结

本文详细介绍了 Visual Basic .NET 中消息框和对话框的使用方法,包括消息框的创建和显示、对话框的创建步骤、 ShowDialog 方法的使用、公共和私有作用域的概念以及属性过程的应用。通过这些技术,可以实现更复杂的用户交互和数据输入功能。

9.2 建议
  • 在开发过程中,根据实际需求选择合适的消息框或对话框。如果只需要简单的提示信息,可以使用消息框;如果需要获取更复杂的信息,可以创建自定义对话框。
  • 合理使用公共和私有作用域,遵循封装的原则,将数据验证逻辑放在属性过程中,以确保数据的有效性。
  • 在编写代码时,注意代码的可读性和可维护性,使用有意义的变量名和方法名,并添加必要的注释。
10. 流程图示例
graph TD;
    A[开始] --> B[创建 Windows 应用程序];
    B --> C[设置主窗体属性];
    C --> D[添加按钮到主窗体];
    D --> E[设置按钮属性];
    E --> F[添加第二个窗体作为对话框];
    F --> G[设置对话框属性];
    G --> H[添加按钮到对话框];
    H --> I[设置按钮属性];
    I --> J[添加文本框到对话框];
    J --> K[设置文本框属性];
    K --> L[添加属性过程代码];
    L --> M[添加按钮点击事件代码];
    M --> N[运行项目];
    N --> O{点击 OK 按钮?};
    O -- 是 --> P[更改主窗体标题];
    O -- 否 --> Q[不更改主窗体标题];
    P --> R[结束];
    Q --> R[结束];
11. 表格总结
项目 描述
消息框 内置在 Visual Basic 中,用于显示简单的提示信息,通过 MessageBox.Show 方法显示
对话框 由程序员创建,可添加额外控件,通过 ShowDialog 方法显示
ShowDialog 方法 显示自定义窗体,显示前需创建窗体实例
公共和私有作用域 Public 可在不同窗体访问, Private 只能在包含它的窗体代码模块中访问
属性过程 用于跨窗体访问属性,可包含 Get Set 过程

通过以上的内容,你可以全面了解 Visual Basic .NET 中消息框和对话框的开发方法,并在实际项目中灵活运用。希望这些知识对你有所帮助,祝你在编程的道路上取得更好的成果!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值