ITADN
dotnet/winforms
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Windows 窗体

License: MIT

Windows Forms (WinForms) 是一个用于构建 Windows 桌面应用程序的 UI 框架。它是 Windows 用户界面库(如 User32 和 GDI+)的 .NET 封装。它还提供了 Windows Forms 特有的控件和其他功能。

Windows Forms 还提供了基于 Visual Studio 中提供的可视化设计器创建桌面应用程序的最具生产力的方式之一。它支持可视化控件的拖放以及其他类似功能,使构建桌面应用程序变得轻松。

Windows Forms 进程外设计器

有关支持 .NET 运行时 的 WinForms 设计器,以及 .NET Framework 设计器(支持 .NET Framework 最高版本 4.8.1)与 .NET 设计器(支持 .NET 6、7、8、9+)之间的更改,请参阅 Windows Forms 设计器文档

重要: 作为第三方控件供应商,当您将控件从 .NET Framework 迁移到 .NET 时,您的控件库在 运行时 预期在相应的新 TFM 上下文中像以前一样工作(TFM 中特殊的现代化或安全更改除外,但这些是罕见的破坏性更改)。根据您的控件设计时支持的丰富程度,从 .NET Framework 到 .NET 的控件设计器迁移可能需要考虑一系列存在破坏性更改的领域。提供的链接指出了有助于该迁移过程的额外资源。

与 .NET Framework 的关系

此代码库是 .NET Framework 4.8 中 Windows Forms 代码的分支。 我们最初以 .NET Core 3.0 为目标启动了迁移过程,并努力使两个运行时达到对等状态。自那以后,我们进行了一系列更改,包括 破坏性更改,这导致两者出现差异。有关破坏性更改的更多信息,请参阅 移植指南

创新和新功能的门槛

WinForms 是一项最初于 2002 年 2 月 13 日作为 .NET Framework 1.0 一部分引入的技术。其主要目标过去是并且现在是作为基于 Windows 的应用程序的快速应用程序工具,这一核心理念多年来未曾改变。当时的 WinForms 解决了开发者的需求

  • 一种用于构建稳定、单体式业务线(Line of Business)应用程序的框架,即使面对极其复杂且繁复的领域特定工作流也是如此
  • 轻松提供丰富用户界面的能力
  • 一种安全且——在 .NET Framework 的前三个版本中——性能日益提升的方式,用于通过各种 Windows Communication Services 跨进程边界进行通信,或通过 ADO.NET 提供程序访问本地数据库。
  • 一个非常易于使用的可视化所见即所得(what-you-see-is-what-you-get)设计器,所需的上手时间很少,并且主要专注于支持基于 96 DPI 分辨率、像素坐标的拖放设计策略。
  • 一种灵活的、基于 .NET 反射的设计器扩展模型,利用了 .NET 组件模型。
  • 可视化控件和组件,它们通过控件设计器(Control Designers)提供自己的设计时功能

随着时间的推移,以及应对多显示器、高分辨率显示器、性能显著更强大的硬件等更多工作场景的需求日益增长,WinForms 一直在持续进行现代化改造。

然后是 Windows 的演进:当 Windows 的新版本引入新的 API 或更改现有 API 或技术时——WinForms 需要跟上步伐并相应地调整其 API。

仍然是推动我们进行现代化和创新的主要动力,也是我们在需要或希望考虑的潜在创新领域必须达到的标准:

  • 例如出于安全考虑,Windows 团队需要将某些依赖项移出进程(out-of-proc),导致在新 Service Pack 或新 Windows 版本下运行的 WinForms 应用出现极端的性能下降
  • 为满足更新后的行业无障碍标准而引入的新功能。
  • HighDPI 和 per Monitor V2 场景。
  • 采用已更改或扩展的 Win32 控件功能,以确保 WinForms 中的控件能够按照 Windows 团队期望的方式工作。
  • 解决性能和安全性问题
  • 引入支持交互式异步调用的方式,使应用能够通过 Windows API 投影/Windows Desktop Bridge 选择迁移路径,支持异步 WebAPI、SignalR、Azure Function 等调用场景,从而让 WinForms 后端得以现代化,甚至迁移到云端。

不符合标准的内容:

  • 现代桌面 UI(如 WPF 或 WinUI)已经明确具备的新功能
  • 会将 Windows 桌面应用“拉伸”为移动、多媒体或 IoT 应用的功能。
  • 领域特定的自定义控件,这些控件已由众多第三方控件供应商提供

关于 Visual Basic 的说明:Visual Basic .NET 开发者约占 WinForms 开发者的 20%。如果变更针对客户可见场景中的 bug,我们欢迎特定于 VB 的变更。问题和 PR 应描述客户可见的场景,并尽可能包含显示所提议变更前后问题的图像。由于带宽有限,我们无法优先处理仅针对正确性或代码整洁性的 VB 特定变更。然而,VB 对我们仍然很重要,我们旨在修复出现的任何关键问题。

请注意

:warning: 此仓库仅包含 Windows Forms 的 .NET platform.
实现 它不包含:

  • .NET Framework 版本的 Windows Forms。有关 .NET Framework(包括 Windows Forms)的问题,应在 Developer CommunityProduct Support 网站上提交。不应在此仓库中提交。
  • Windows Forms 设计器实现。有关设计器的问题可以通过 VS 反馈工具(Visual Studio 右上角图标)提交,或使用 Windows Forms 进程外设计器问题模板在此仓库中提交。

我如何贡献?

我们欢迎贡献!世界各地许多人帮助使该项目变得更好。

How to Engage, Contribute, and Provide Feedback

贡献的最佳方式之一是尝试新功能、提交 bug、参与设计讨论以及修复问题。

Reporting security issues

安全问题和 bug 应通过电子邮件私下报告给 Microsoft Security Response Center (MSRC) secure@microsoft.com。您应在 24 小时内收到回复。如果由于某种原因未收到,请通过电子邮件跟进,以确保我们收到了您的原始消息。更多信息,包括 MSRC PGP 密钥,可在 Security TechCenter 中找到。另请参阅有关 Microsoft .NET Core and ASP.NET Core Bug Bounty Program 的相关信息。

Code of Conduct

本项目使用 .NET 基金会行为准则 来定义我们社区中的预期行为。任何滥用、骚扰或其他不可接受的行为,均可通过联系项目维护者 conduct@dotnetfoundation.org 进行举报。

许可证

.NET(包括 Windows Forms 仓库)采用 MIT 许可证 授权。

.NET 基金会

.NET Windows Forms 是一个 .NET 基金会 项目。
请参阅 .NET 主仓库 以查找其他 .NET 相关项目。