惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
V
Vulnerabilities – Threatpost
T
Tor Project blog
T
Troy Hunt's Blog
C
CERT Recently Published Vulnerability Notes
C
Cisco Blogs
W
WeLiveSecurity
Cloudbric
Cloudbric
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
爱范儿
爱范儿
Google Online Security Blog
Google Online Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Martin Fowler
Martin Fowler
Cisco Talos Blog
Cisco Talos Blog
F
Full Disclosure
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
I
Intezer
www.infosecurity-magazine.com
www.infosecurity-magazine.com
G
GRAHAM CLULEY
B
Blog RSS Feed
云风的 BLOG
云风的 BLOG
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
腾讯CDC
L
LangChain Blog
L
LINUX DO - 热门话题
H
Help Net Security
S
Schneier on Security
N
Netflix TechBlog - Medium
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
Spread Privacy
Spread Privacy
S
Secure Thoughts
T
The Exploit Database - CXSecurity.com
P
Privacy International News Feed
P
Privacy & Cybersecurity Law Blog
Cyberwarzone
Cyberwarzone
A
About on SuperTechFans
NISL@THU
NISL@THU
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
Recorded Future
Recorded Future
雷峰网
雷峰网
AWS News Blog
AWS News Blog
V2EX - 技术
V2EX - 技术

博客园 - 老码识途呀

基于.NET的Windows窗体编程之WinForms图像控件 基于.NET的Windows窗体编程之WinForms提示控件 基于.NET的Windows窗体编程之WinForms时间控件 基于.NET的Windows窗体编程之WinForms图表控件 基于.NET的Windows窗体编程之WinForms输入与显示 基于.NET的Windows窗体编程之WinForms菜单工具栏 基于.NET的Windows窗体编程之WinForms打印 基于.NET的Windows窗体编程之WinForms对话框 基于.NET的Windows窗体编程之WinForms列表控件 基于.NET的Windows窗体编程之WinForms数据表格 基于.NET的Windows窗体编程之WinForms事件简介 基于.NET的Windows窗体编程之WinForms布局简介 基于.NET的Windows窗体编程之WinForms控件简介 推荐一款基于.NET和百度飞桨的OCR识别组件 新书速递,手把手教你WPF入门与开发 推荐一种并发线程中资源同步常用方法 推荐一种手动设置异步线程等待机制的解决方案 推荐一种异步线程执行过程中更新进度的方法 推荐一款基于.NET的进程间数据交互经典解决方案 推荐一款线程or进程间数据同步解决方案 推荐一款代码规范检查(CodeReview)神器 推荐一款高性能状态机管理解决方案 推荐一款进程间高速交换数据的解决方案 推荐一款基于.NET的进程间通信框架 推荐一款基于EF-Core的分库分表利器 推荐一种程序崩溃闪退或卡死的分析方法 推荐一款Excel读写神器之MiniExcel入门详解 推荐一款Ioc容器之Ninject入门详解 ASP.NET Core WebApi+React UI开发入门详解
基于.NET的Windows窗体编程之WinForms入门简介
老码识途呀 · 2026-03-24 · via 博客园 - 老码识途呀

最早发明计算机主要是用于科学计算,利用计算机的高速运算能力代替人工计算以提高效率,应用范围主要集中在科学工作者以及专业从业人员那一小撮人群,那时侯的使用者主要关注数据,通常使用控制台操作计算并显示结果。而真正的让计算机由高端产品走进大众视野,则要从GUI程序的出现开始,它让程序从枯燥刻板的黑窗口进入到图形化时代,实现了一次划时代的飞跃。在软件发展历程中,Windows窗体编程占据着非常重要的地位,它不仅拓展了计算机的应用范围与场景,还让人们对计算机产生了非常浓厚的兴趣,进而衍生出了更多的生态与产业。到今天为止,各种各样的编程形式层出不穷,如Web,Android,Windows Forms,WPF等等,都是GUI图形化编程的不同形态。今天我们主要讲解的是基于.NET的Windows窗体编程,仅供学习分享使用,如有不足之处,还请指正。

概述

基于.NET的Windows窗体编程,就是我们常说的WinForms编程,它一个基于.NET的UI框架,用于创建适用于 Windows 的丰富桌面客户端应用,Windows窗体开发平台支持广泛的应用开发功能,包括控件、图形、数据绑定和用户输入。对于Windows窗体编程,微软也提供了Visual Studio这一开发神器,通过Visual Studio的可视化控件拖放等功能可以轻松构建桌面应用。在Windows窗体中窗体是向用户显示信息的可视界面,通过窗体上的控件来显示信息,接收用户请求等操作,这些控件可以显示文本框、按钮、下拉框、单选按钮,甚至网页等非常丰富的内容。Windows窗体编程中的控件,可以是简单的按钮,文本框,也可以是复杂的数据列表,菜单等内容,在接下来的文章中,由浅入深,会逐一讲解。

创建Windows窗体应用

所谓“工欲善其事,必先利其器”开发Windows窗体应用程序,首先需要安装Visual Studio,它是编程开发IDE,集开发,调试,编译于一体的开发神器。主要有企业版本,专业版本,社区版本等不同版本,本文以学习分享为主,采用VS2022社区版。

打开Visual Studio,点击“创建新项目(N)”打开创建新项目向导页面。

image

在打开的“创建新项目”向导页面,选择“Windows窗体应用”项目模板,它包含两个模板:一个基于.NET的Windows窗体应用模板,一个是基于.NET Framework的Windows窗体应用模板。在此我们选择第一个,然后点击“下一步”,打开“配置新项目”对话框。

image

在“配置新项目”对话框,输入项目名称,如Okcoder.WinForms.Hello,以及项目保存位置,然后点击“下一步”,打开“其他信息”对话框。

image

在“其他信息”对话框中,选择应用程序目标框架,在此默认选择“.NET8.0(长期支持)”,也可以通过右侧的下拉箭头进行修改,然后点击“创建”按钮

image

应用程序创建成功后,在Visual Studio中,主要包含4个重要组成部分,分别如下所示:

  1. 解决方案资源管理器,所有项目文件、代码、窗体和资源都将显示在此窗口中。
  2. 属性,此窗口显示的属性设置可以根据所选项目的上下文进行配置。 例如,如果从 解决方案资源管理器 中选择项,则会看到与文件相关的设置。 如果在 设计器中选择对象,则会看到控件或窗体的属性。
  3. 表单设计器,这是表单的设计工具。 它是交互式的,可以从 工具箱中拖放对象。 通过选择和移动设计器中的项,你可以直观地为应用组合用户界面(UI)。
  4. 工具箱,工具箱包含可添加到表单的所有控件。 若要将控件添加到当前窗体,请双击控件或将控件拖放到窗体。

image

默认情况下,Visual Studio不会打开工具箱和属性窗口。 Visual Studio会记住您打开这些窗口的操作,并在以后保持打开。可以通过点击菜单栏“视图(V)”,然后“工具箱(X)”打开工具箱窗口,及“属性窗口(W)”菜单,打开属性窗口。

image

Form窗体

通过模板创建WinForms应用程序,会默认创建一个Form1窗体,它是System.Windows.Forms.Form的派生类,表示一个用于构建应用程序的窗口(Window)或弹出框(Dialog box)。它是窗体应用程序中的顶级容器,可以向Form中添加控件,并处理对应的事件。那么如何添加新的窗体呢?

首先在需要添加新窗体的项目上右键,在弹出的快捷菜单中选择“添加(D)”然后在弹出的子菜单中选择“窗体(Windows窗体)(F)...”,然后打开添加窗体对话框。

image

在打开的添加新项对话框中,会默认选择“窗体(Windows窗体)”模板,然后输入窗体"名称(N)",如“Form2”,点击“添加(A)”即可。

image

创建成功后,Form窗体文件主要包含3部分,如下所示:

  1. Form2.cs,主要包含构造函数,用于编写业务逻辑功能
  2. Form2.Designer.cs,当向窗体拖放控件时,会自动生成控件的构建,布局相关代码,以及用户通过属性窗口设置的属性等内容。
  3. Form2.resx,主要用于存储资源相关内容。

注意:Form2.Designer.cs及Form2.resx这两个文件一般通过VS设计器自动生成,无需要手动修改。

image

Form窗体常见属性与事件

在日常开发中,经常用到的Form窗体的主要属性:

  • Name,窗体的名称,在相同的namespace下,Name应该保持唯一。
  • Text,用于设置Form窗体的标题文本。
  • WindowState,用于设置窗体的初始可视状态,它是一个枚举,主要有3个选项,Normal(正常状态),Maximized(最大化),Minimized(最小化)。
  • StartPosition,窗体第一次出现时的位置。它是一个枚举,主要有5个选项,WindowsDefaultLocation(默认位置+窗体大小),Manual(手动设置的位置),CenterScreen(屏幕中心),CenterParent(父窗体的中心),WindowsDefaultBounds(默认位置+默认边界)。
  • ClientSize,窗体大小,单位为Size,包含Width,Height两个值。
  • TopMost,用于设置窗体是否永远在其他未设置此属性为true的窗体之上。

Form窗体在最常用事件,主要有以下几个:

  • Load,窗体被加载时触发,主要用于初始化窗体需要的信息。
  • FormClosing,窗体被关闭之前触发,可以用FormClosingEventArgs参数的Cancel来设置是否真的关闭窗体。如果设置Cancel为true,则取消关闭窗体。
  • FormClosed,窗体被关闭之后触发,可以用来释放资源等操作。

在Visual Studio设计器,选择Form窗体,在右下角的属性窗口中,可以直接设置对应的属性,如下所示:

image

事件也可以在属性窗口的,切换后事件Tab页进行双击设置。如下所示:

image

当通过属性窗口中设置相应的属性和事件后,会在窗体对应的Designer.cs类文件中自动生成相关代码,如下所示:

image

并在表单对应的.cs文件中生成对应的事件委托方法体,可以在其中编写业务逻辑,如下所示:

image

运行调试

在Visual Studio中,有以下几种方式可以调试启动程序:

  • 点击Visual Studio工具栏中的“开始调试”按钮(绿色实心右箭头),
  • 通过F5快捷键
  • 通过菜单栏“调试(D)”,然后在子菜单中选择“开始调试(S)”

如果只想启动程序,不需要调试,则可以通过如下方式启动:

  • 点击Visual Studio工具栏中的“开始执行(不调试)”按钮(绿色空心右箭头),
  • 通过Ctrl+F5快捷键
  • 通过菜单栏“调试(D)”,然后在子菜单中选择“开始执行(不调试)(H)”

image

在上述过程中,我们将窗体的标题设置为了“HelloWorld”,希望可以通过经典的HelloWorld来打开.NET Windows窗体编程的新大门。

程序运行成功后,如下所示:

image

以上就是《基于.NET的Windows窗体编程之WinForms入门简介》的全部内容,旨在抛砖引玉,一起学习,共同进步。