跳转至

简介

点击这里,边看视频讲解,边学习以下内容

Windows Forms 简称 WinForms, 是微软公司开发的图形界面库,主要用于 Windows 平台。

虽然后续有其它更新的图形界面库,比如 WPFMAUIAvalonia 等等, 但 WinForms 上手容易的多。

所以,不少企业 需要 快速开发 一些工具时,仍然会选择它。

另外不少 学生做毕业设计,或者个人开发一些小工具,也会选择它。

图形界面,另外一个快速开发的选择是 Python + Qt,本网站也有教程,感兴趣的可以自行学习。


WinForms 只能在 Windows 平台上运行,如果你需要开发支持 MacOSLinux 的图形界面应用程序,WinForms 就不适合了。


WinForms 主要使用 C# 编程语言,学习本教程,最好具备一定的C# 语言基础。

当然由于我们重点讲图形界面编程这一块,WinForms 开发本身又比较简单,即使没有学过 C# 语言,也可以大体看懂。

开发环境

WinForms开发环境,首选是:Visual Studio

如果你还没有安装,可以 点击这里,打开下载页面, 选择 Visual Studio 2022 里面的 社区版 : Community,下载并安装。


安装时,一定要 确保 勾选 .NET 桌面开发

语言包推荐选择 英语 + 中文简体。因为 中文版界面有的地方 翻译用词怪怪的。

一个小程序

这里, 我们先开发这样一个简单的程序

让用户输入一段文本包含:员工姓名、薪资、年龄。

格式如下:

薛蟠     44560 25
薛蝌     4460 25
薛宝钗   35776 23
薛宝琴   14346 18
王夫人   43360 45
王熙凤   24460 25
王子腾   55660 45
王仁     15034 65
尤二姐   5324 24
贾芹     5663 25
贾兰     13443 35
贾芸     4522 25
尤三姐   5905 22
贾珍     54603 35

该程序可以把薪资在 2万 以上、以下的人员名单分别打印出来。

界面如下:

创建 WinForms 项目

安装完成后,就可以开发图形界面程序了。

打开 Visual Studio 2022,选择 创建新项目


接下来的界面会让你选择创建项目的模板。

右边,下拉框选择 C# 语言,平台选择 Windows,项目类型选择 桌面 (Desktop)

这时候会有2种类型的项目模板可供选择:

- Windows Forms App 
- Windows Forms App (.NET Framework)

.NET Framework 是微软公司早期的 .NET 运行平台。

缺点当然是比较老,有些新的特性不支持。优点是,Windows系统自带。

如果你的程序比较简单,希望发布的包小一些,可以选择.NET Framework

否则,推荐选择上面这个 Windows Forms App,它使用的是新的 .NET 运行平台。

选择后,点击 下一步;


在新建项目窗口中,输入项目名称,比如 Stats,选择项目位置,点击 下一步;

选择输入项目名称和位置,

下面有一个选项: Place solution and project in the same directory

一个 solution 可以包含 多个 项目(project),可以看作 项目包, 是一系列相关项目的 集合

如果这个solution包含多个项目,应该取消勾选,这样可以把solution是上层目录,里面的每个项目都放在单独的子目录下。

如果你这个solution就一个项目,默认是把项目和solution放在同一个目录下,

这里默认勾选即可, 点击 下一步;


最后,在其他信息窗口中,为框架设置选择你安装的最新的 .NET 运行平台,比如 .NET 9.0,然后选择创建。


创建完成后,你可以看到 设计器(Designer) 工作区窗口, 里面有一个空白的窗体,

WinForms 的界面设计是深度集成在 Visual Studio 中的,我们可以从左侧的 Toolbox(工具箱) 中拖拽控件到窗体上。,直观地设计界面。


做界面设计时, 推荐 Visual Studio 这样放置5个窗口

左上: Solution Explorer (View > Solution Explorer)

左下: Toolbox (View > Toolbox)

右上: Document Outline (View > Other Windows > Document Outline)

右下: Properties (View > Properties Window)

中间: Form Designer

可以拖动设定 这些窗口的摆放位置,具体看视频讲解


这里,我们需要添加以下控件:

  • 文本框 TextBox:用于输入员工信息
  • 按钮 Button:用于触发统计操作

接下来,我们可以设置控件的属性,比如按钮的文本、文本框的默认文本等。

设置控件属性

在设计器中,选中控件后,可以在右侧的属性窗口中设置控件的属性。

属性窗口中会显示选中控件的所有属性,你可以通过修改这些属性来调整控件的外观和行为。

可以根据 字母顺序,或者类别 两种方法对属性进行 组织排序,方便查找。


比如,

设置 按钮 的文本为 "统计" (在 Text 属性里面设置),

设置 文本框 的默认文本为 "请输入员工信息",并设置 允许多行输入(在 Multiline 属性里面设置为 true)。


WinForms 中的控件大小和位置可以通过以下2种方式调整:

  1. 鼠标拖拽: 在设计器中直接拖动控件的边框或角点来调整大小,拖动控件本身来调整位置。

  2. 属性窗口: 在设计器中选中控件后,可以在右侧的属性窗口中直接修改 Location(位置)和 Size(大小)属性。

编写事件处理代码

接下来,我们需要为按钮添加点击事件处理代码。

在设计器中,双击按钮控件,会自动生成按钮的点击事件处理方法。

我们可以在里面编写代码来处理按钮点击事件,比如获取文本框中的文本,进行统计等操作。

大家可以用AI助手来帮忙写代码,或者直接复制下面的代码。

private void button1_Click(object sender, EventArgs e)
{
    // 获取文本框中的文本
    string inputText = textBox1.Text;
    var noEmpty = StringSplitOptions.RemoveEmptyEntries;

    // 进行统计操作
    string[] lines = inputText.Split('\n', noEmpty);

    string highSalary = "";   
    string lowSalary = ""; 

    foreach (string line in lines)
    {
        string[] parts = line.Split(' ', noEmpty);
        if (parts.Length >= 3 && int.TryParse(parts[1], out int salary))
        {
            if (salary >= 20000)
            {
                highSalary += parts[0] + " ";
            }
            else
            {
                lowSalary  += parts[0] + " ";
            }
        }
    }
    // 显示结果
    MessageBox.Show(
        $"高薪人员:\n{highSalary}\n\n低薪人员:\n{lowSalary}", "统计结果", 
        MessageBoxButtons.OK, MessageBoxIcon.Information);
}

当我们要获取文本框中的文本时,怎么知道文本框对象的什么方法或者属性可以获取文本内容呢?

怎么弹出消息框呢?

可以通过查看我们网站 常用控件 章节。

运行/发布 程序


现在,我们可以运行程序,看看效果。

点击运行按钮,可以看到弹出消息框显示统计信息。


发布 WinForms 程序,可以通过 Visual Studio 的发布向导来完成。

  1. 打开项目,选择 发布
  2. 选择发布目标,比如 文件夹
  3. 设置发布文件夹路径;
  4. 点击 发布 按钮;

发布时,可以选择是否包含 .NET 运行时,是否生成单文件等选项。 具体参考视频讲解。

设置图标

先准备一个图标 .ico 文件。

可执行文件图标

右键点击 项目 → 属性(Properties);

点击左边 应用程序(Application) 栏,找到设置 应用程序图标(Icon and manifest)

点击下拉框,选择你添加的 .ico 文件

窗体图标

打开你的窗体(如 Form1.cs)

在属性窗口中找到 Icon 属性,设置为你的 .ico 文件

总结

我们再回过头来看一下项目里面的文件。

当你设计界面时,Visual Studio 会自动在后台生成对应的 C# 代码,并将其保存在一个名为 <窗口名>.Designer.cs 的文件中。这个文件包含了窗体和所有控件的初始化、属性设置和布局信息。

开发者通常不需要手动修改 <窗口名>.Designer.cs 文件,所有操作都通过可视化的设计器和旁边的 "属性" 窗口完成。

WinForms 把界面定义和业务逻辑代码的清晰分离,业务逻辑写在 <窗口名>.cs

通过前面的开发,我们可以发现,开发图形界面的时候, 通常的两个重点就是 界面设计事件处理

界面设计, 也就是如何设计图形界面的外观。

事件处理,也就是如何处理用户的操作,比如点击按钮,输入文本等。

您需要高效学习,找工作? 点击咨询 报名实战班

点击查看学员就业情况