C#编写WinForm 窗体应用程序(第二期)

简介: 消息框在 Windows 操作系统经常用到,例如在将某个文件或文件夹移动到回收站中时系统会自动弹出如下图所示的消息框。

C# McssageBox

消息框在 Windows 操作系统经常用到,例如在将某个文件或文件夹移动到回收站中时系统会自动弹出如下图所示的消息框。

在 Windows 窗体应用程序中向用户提示操作时也是采用消息框弹出的形式。

消息框是通过 McssageBox 类来实现的,在 MessageBox 类中仅定义了 Show 的多个重载方法,该方法的作用就是弹出一个消息框。

由于 Show 方法是一个静态的方法,因此调用该方法只需要使用MessageBox.Show( 参数 )的形式即可弹出消息框。

消息框在显示时有不同的样式, 例如标题、图标、按钮等。

常用的 Show 方法参数如下表所示image.png

在上面所列出方法的参数中还涉及两个枚举类型,一个是 MessageBoxButtons,一个是 MessageBoxIcon。下面分别介绍这两个枚举类型中的具体值。

MessageBoxButtons 枚举类型主要用于设置消息框中显示的按钮,具体的枚举值如下:

• OK:在消息框中显示“确定”按钮。

• OKCancel:在消息框中显示“确定”和“取消”按钮。

• AbortRetryIgnore:在消息框中显示“中止” “重试”和“忽略”按钮。

• YesNoCancel:在消息框中显示“是” “否”和“取消”按钮。

• YesNo:在消息框中显示“是”和“否”按钮。

• RetryCancel:在消息框中显示“重试”和“取消”按钮。

MessageBoxIcon 枚举类型主要用于设置消息框中显示的图标,具体的枚举值如下:

• None:在消息框中不显示任何图标。

• Hand、Stop、Error:在消息框中显示由一个红色背景的圆圈及其中的白色X组成 的图标。

• Question:在消息框中显示由圆圈和其中的一个问号组成的图标。

• Exclamation、Warning:在消息框中显示由一个黄色背景的三角形及其中的一个感叹号组成的图标。

• Asterisk、Information:在消息框中显示由一个圆圈及其中的小写字母 i 组成的图标。

调用 MessageBox 类中的 Show 方法将返回一个 DialogResult 类型的值。

DialogResult 也是一个枚举类型,是消息框的返回值,通过单击消息框中不同的按钮得到不同的消息框返回值。

DialogResult 枚举类型的具体值如下:

• None:消息框没有返回值,表明有消息框继续运行。

• OK:消息框的返回值是 0K (通常从标签为“确定”的按钮发送)。

• Cancel:消息框的返回值是 Cancel (通常从标签为“取消”的按钮发送)。

• Abort:消息框的返回值是 Abort (通常从标签为“中止”的按钮发送)。

• Retry:消息框的返回值是 Retry (通常从标签为“重试”的按钮发送)。

• Ignore:消息框的返回值是 Ignore (通常从标签为“忽略“的按钮发送)。

• Yes:消息框的返回值是 Yes (通常从标签为“是“的按钮发送)。

• No:消息框的返回值是 No (通常从标签为“否“的按钮发送)。

下面通过实例来演示消息框的应用。

【实例】创建一个窗体,单击该窗体弹出一个消息框提示“是否打开新窗口”,如果单击“是”按钮,则打开新窗口,如果单击“否”按钮,则关闭当前窗体。

根据题目要求,完成该实例需要如下步骤:

(1) 创建所需的窗体(Windows_3)

创建一个名为 Windows_3 的项目,并在该项目中添加两个窗体,分别命名为 MainForm、 MessageForm。

(2) 在 MainForm 中添加事件

在 MainForm 窗体中添加鼠标单击事件,并在相应的事件中添加如下代码:

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
    }
    private void MainForm_MouseClick(object sender, MouseEventArgs e)
    {
        //弹出消息框,并获取消息框的返回值
        DialogResult dr = MessageBox.Show("是否打开新窗体?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
        //如果消息框返回值是Yes,显示新窗体
        if (dr == DialogResult.Yes)
        {
            MessageForm messageForm = new MessageForm();
            messageForm.Show();
        }
        //如果消息框返回值是No,关闭当前窗体
        else if (dr == DialogResult.No)
        {
            //关闭当前窗体
            this.Close();
        }
    }
}

(3) 设置项目的启动窗体

在 Program.cs 文件中将 MainForm 设置为启动窗体,代码如下:

static class Program
{
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MainForm());
    }
}

完成上面 3 个步骤后运行窗体,并在窗体上单击鼠标,弹出如下图所示的消息框:


C# Label和LinkLabel

在 Windows 窗体应用程序中,每个窗体都必不可少地会用到文本框和标签控件。

由于在窗体中无法直接编写文本,通常使用标签控件来显示文本。

关于文本框的应用我们将在以后的博客中为大家讲解。

在 Windows 窗体应用程序中,标签控件王要分为普通的标签 (Label) 和超链接形式的标签 (LinkLabel) 。

普通标签 (Label) 控件的常用属性如下表所示:

image.png

普通标签控件 (Label) 中的事件与窗体的事件类似,常用的事件主要有鼠标单击事件、 鼠标双击事件、标签上文本改变的事件等。

与普通标签控件类似,超链接标签控件 (LinkLabel) 也具有相同的属性和事件。

超链接标签主要应用的事件是鼠标单击事件,通过单击标签完成不同的操作,例如在 QQ 窗体中注册账号和找回密码的操作。

下面通过实例来演示标签控件的应用。

【实例】创建一个窗体,在窗体上放置两个普通标签控件 (Label),分别显示“早上好!”和“Good morning!”。

在窗体上通过单击超链接标签 (LinkLabel) 交换这两个标签上显示的信息。

根据题目要求,首先创建一个名为 ChangeTextForm 的窗体,并设置所需控件的属性和事件,实现的代码如下:

public partial class ChangeTextForm : Form
{
    public ChangeTextForm()
    {
        InitializeComponent();
    }
    //超链接标签控件的单击事件
    private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        //交换标签上的信息。
        string temp = label1.Text;
        label1.Text = label2.Text;
        label2.Text = temp;
    }
}

提示:所需控件可以在工具箱中创建,在控件上右键即可设置相关属性和事件

执行上面的代码,效果如下图所示:

结束语

各位互联网上的同事、同仁、同学们,C# 编写 WinForm 窗体应用程序(第二期)到这里就结束了。

相关文章
|
3月前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
2月前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
217 0
|
2月前
|
API C# Windows
【C#】在winform中如何实现嵌入第三方软件窗体
【C#】在winform中如何实现嵌入第三方软件窗体
136 0
|
2月前
|
API C#
C#实现Winform程序右下角弹窗消息提示
C#实现Winform程序右下角弹窗消息提示
133 0
|
4月前
|
关系型数据库 Java MySQL
C#winform中使用SQLite数据库
C#winform中使用SQLite数据库
213 3
C#winform中使用SQLite数据库
|
4月前
|
数据库
C#Winform使用NPOI获取word中的数据
C#Winform使用NPOI获取word中的数据
200 2
|
5月前
|
开发框架 数据可视化 C#
|
7月前
|
C#
C#如何实现窗体最小化到托盘
C#如何实现窗体最小化到托盘
103 0
|
7月前
|
JavaScript C#
C#winForm程序与html JS交互调用
C#winForm程序与html JS交互调用
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
36 3