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

简介: WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,一般使用 C# 编程。

WinForm窗体应用程序简述

WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,一般使用 C# 编程。C# WinForm 编程需要创建「Windows窗体应用程序」项目。

.NET 提供了大量 Windows 风格的控件和事件,我们可以直接拿来使用,上手简单,开发快速。

Windows 窗体应用程序是 C# 语言中的一个重要应用,也是 C# 语言最常见的应用。这套 C# WinForm 教程将教会大家如何使用 WinForm 进行界面设计,并绑定对应的事件,开发出一个实用的客户端。

对于每一个使用过 Windows 操作系统的读者来说,Windows 应用程序是不会陌生的。使用 C# 语言编写的 Windows 应用程序与 Windows 操作系统的界面类似,每个界面都是由窗体构成的,并且能通过鼠标单击、键盘输入等操作完成相应的功能。

C#创建WinForm窗体应用程序

在 Visual Studio 2019 编译器中创建 Windows 窗体应用程序的步骤与创建控制台应用程序的步骤类似,在 Visual Studio 2019 编译器的开始页面中,依次选择创建新项目→C#→Windows→Windows Forms App (. NET),会弹出如下图所示的界面。



弹出上图所示的对界面之后,点击下一步→更改项目名→更改项目路径→点击将解决方案和项目放在同一目录中→点击创建。创建完了后Visual Studio 2019编译器中打开项目所在的目录。(本人建议用Visual Studio Code 2021编译器中编译WinForm窗体应用程序。)

在每一个 Windows 窗体应用程序的项目文件夹中,都会有一个默认的窗体程序 Form1.cs,并且在项目的 Program.cs 文件中指定要运行的窗体。

Program.cs 文件的代码如下:

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

在上述代码的 Main 方法中的: • 第 1 行代码:用于启动应用程序中可视的样式,如果控件和操作系统支持,那么 控件的绘制就能根据显不风格来实现。

• 第 2 行代码:控件支持 UseCompatibleTextRenderingproperty 属性,该方法将此属 性设置为默认值。

• 第 3 行代码:用于设置在当前项目中要启动的窗体,这里 new Form1() 即为要启动的窗体。

在 Windows 窗体应用程序中界面是由不同类型的控件构成的。

C#窗体属性

WinForm窗体的常用属性如下表所示。


image.png

下面通过实例来演示窗体属性的应用。

[实例]创建一个名为TestForm的窗体,并完成如下设置。

  • 窗体的标题栏中显示“第一个窗体”。
  • 窗体中起始位置居中。
  • 窗体中设置一个背景图片。
  • 窗体中不显示最大化和最小化按钮。

实现题目中要求的窗体,具体步骤如下。

(1)创建一个名为 TestForm 的窗体

创建一个 Windows 应用程序 Windows-2,然后右击该项目,在弹出的右键菜单中选择“添加新项”命令。

(2) 设置 TestForm 窗体的属性

TestForm 窗体的属性设置如下表所示。

image.png

在上述属性中除了背景图片 (Backgroundimage) 属性以外,其他属性直接添加上表中对应的属性值即可。

设置背景图片属性 (Backgroimdlmage) 的方法是单击 Backgroundimage 属性后的按钮,在弹出的对话框中单击“导入”按钮。

如下图所示, 选择图片 window_2.jpg 所在的路径,单击“确定”按钮即可完成背景图片属性的设置。


(3) 设置 TestForm 窗体为启动窗体

每一个 Windows 窗体应用程序在运行时仅能指定一个启动窗体,设置启动窗体的方式是在项目的 Program.cs 文件中指定。具体的代码如下:

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

完成以上 3 步后按 F5 键运行程序,效果如下图所示:

C#窗体事件

在窗体中除了可以通过设置属性改变外观外,还提供了事件来方便窗体的操作。

在打开操作系统后,单击鼠标或者敲击键盘都可以在操作系统中完成不同的任务,例如双击鼠标打开“我的电脑”、在桌面上右击会出现右键菜单、单击一个文件夹后按 F2 键可以更改文件夹的名称等。 实际上这些操作都是 Windows 操作系统中的事件。

在 Windows 窗体应用程序中系统已经自定义了一些事件,在窗体属性面板中单击闪电图标即可查看到窗体中的事件,如下图所示:

窗体中常用的事件如下表所示:

image.png

下面通过实例来演示窗体中事件的应用。

【实例】通过窗体的不同事件改变窗体的背景颜色。

在本例中采用的事件分别是窗体加载事件 (Load)、鼠标单击事件 (MouseClick)、鼠标双击事件 (MouseDoubleClick)。

实现该操作的步骤如下:

(1) 新建窗体

在C#窗体属性中使用的 Windows-2 项目中添加一个名为 ColorForm 的窗体。

(2) 添加事件

右击该窗体,在弹出的右键菜单中选择“属性”命令,然后在弹出的面板中单击闪电图标进入窗体事件设置界面。

在该界面中依次选中需要创建的事件,并双击该事件右侧的单元格,系统会自动为其生成对应事件的处理方法,设置后的属性面板如下图所示:


设置好事件后会在 ColorForm 窗体对应的代码文件中自动生成与事件对应的 4 个方法, 代码如下:

public partial class ColorForm : Form
{
    public ColorForm()
    {
        InitializeComponent();
    }
    private void ColorForm_MouseClick(object sender, MouseEventArgs e)
    {
    }
    private void ColorForm_MouseDoubleClick(object sender, MouseEventArgs e)
    {
    }
    private void ColorForm_Load(object sender, EventArgs e)
    {
    }
}

在执行不同事件时,系统会自动执行事件所对应方法中的内容。

(3) 添加事件处理代码

在本例中每个事件完成的操作都是更改窗体的背景颜色,窗体的背景颜色所对应的属性是 BackColor。

除了可以在属性面板中设置外,使用代码设置的方式是使用 this 关键字代表当前窗体的实例,BackColor 属性类型是 Color 枚举类型的,代码如下:

this.BackColor = Color.Red;

上面的代码是将窗体的背景颜色设置为红色。

下面分别将类似代码添加到每一个事件中,代码如下:

public partial class ColorForm : Form
{
    public ColorForm()
    {
        InitializeComponent();
    }
    private void ColorForm_MouseClick(object sender, MouseEventArgs e)
    {
        //设置窗体背景颜色为黑色
        this.BackColor = Color.Black;
    }
    private void ColorForm_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        //设置窗体背景颜色为蓝色
        this.BackColor = Color.Blue;
    }
    private void ColorForm_Load(object sender, EventArgs e)
    {
        //设置窗体颜色为红色
        this.BackColor = Color.Red;
    }
}

(4) 设置启动窗体

在 Windows-2 项目的 Program.cs 类中将 ColorForm 窗体设置为启动窗体,代码如下:

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

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


结束语

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

相关文章
|
1月前
|
缓存 C# Windows
C#程序如何编译成Native代码
【10月更文挑战第15天】在C#中,可以通过.NET Native和第三方工具(如Ngen.exe)将程序编译成Native代码,以提升性能和启动速度。.NET Native适用于UWP应用,而Ngen.exe则通过预编译托管程序集为本地机器代码来加速启动。不过,这些方法也可能增加编译时间和部署复杂度。
|
2月前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
28天前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
|
1月前
|
API C# Windows
【C#】在winform中如何实现嵌入第三方软件窗体
【C#】在winform中如何实现嵌入第三方软件窗体
71 0
|
1月前
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
55 0
|
1月前
|
安全 API C#
C# 如何让程序后台进程不被Windows任务管理器强制结束
C# 如何让程序后台进程不被Windows任务管理器强制结束
63 0
|
2月前
|
C# 容器
C#中的命名空间与程序集管理
在C#编程中,`命名空间`和`程序集`是组织代码的关键概念,有助于提高代码的可维护性和复用性。本文从基础入手,详细解释了命名空间的逻辑组织方式及其基本语法,展示了如何使用`using`指令访问其他命名空间中的类型,并提供了常见问题的解决方案。接着介绍了程序集这一.NET框架的基本单位,包括其创建、引用及高级特性如强名称和延迟加载等。通过具体示例,展示了如何创建和使用自定义程序集,并提出了针对版本不匹配和性能问题的有效策略。理解并善用这些概念,能显著提升开发效率和代码质量。
101 4
|
1月前
|
API C#
C#实现Winform程序右下角弹窗消息提示
C#实现Winform程序右下角弹窗消息提示
82 0
|
2月前
|
Linux C# 开发者
Uno Platform 驱动的跨平台应用开发:从零开始的全方位资源指南与定制化学习路径规划,助您轻松上手并精通 C# 与 XAML 编程技巧,打造高效多端一致用户体验的移动与桌面应用程序
【9月更文挑战第8天】Uno Platform 的社区资源与学习路径推荐旨在为初学者和开发者提供全面指南,涵盖官方文档、GitHub 仓库及社区支持,助您掌握使用 C# 和 XAML 创建跨平台原生 UI 的技能。从官网入门教程到进阶技巧,再到活跃社区如 Discord,本指南带领您逐步深入了解 Uno Platform,并提供实用示例代码,帮助您在 Windows、iOS、Android、macOS、Linux 和 WebAssembly 等平台上高效开发。建议先熟悉 C# 和 XAML 基础,然后实践官方教程,研究 GitHub 示例项目,并积极参与社区讨论,不断提升技能。
92 2