WinForms 进。跨平台出。
Majorsilence.Forms 是一个面向 .NET 的跨平台 WinForms 库——一个 Windows Forms
兼容层,把传统和现代的 WinForms 应用迁移到现代技术栈上。保留你已有的
Form、控件、事件处理程序和
*.Designer.cs 文件——
运行在 Linux 上、
运行在 macOS 上,并以同一份构建运行在
Windows 上;移动端和 Web 也触手可及,可通过
Avalonia 自身的
Android、iOS 和 Browser 目标,或者通过
Uno Platform。七个宿主后端共享同一个控件模型——包括
Linux 上的 GTK 4 窗口、终端,以及让 Windows 应用逐个控件迁移的 WinForms 与 WPF 桥接。
压缩的是迁移,不是你的代码库。
迁移一个 WinForms 应用,通常意味着在全新的 UI 范式里从头重写——XAML、MVVM、Web。 这既昂贵又有风险,还会丢掉多年来一直正常运作的业务逻辑和用户体验。 Majorsilence.Forms 镜像了 WinForms 的 API 表面,并提供一个兼容层,让你现有的窗体、控件和代码 以小得多的改动迁移过来。
复用,而不是重写
与你在 WinForms 中编写的相同的控件模型和事件驱动代码。没有 XAML,没有被迫的 MVVM 重写,不必重新学习框架。
从构造上就是跨平台
一切都用 SkiaSharp 绘制,运行在可替换的宿主后端之上——桌面默认使用 Avalonia,其自带的 Android/iOS/Browser 目标是通往移动端和 Web 的一条路径,Uno Platform 是另一条,Linux 上则有真正的 GTK 4 窗口。
逐个控件迁移
仅限 Windows 的 WinForms 和 WPF 后端把 Majorsilence.Forms 控件托管在你已经在交付的应用内部——ToWinFormsControl()、ToWpfElement()——支持 .NET 10 或 .NET Framework 4.8。逐块移植,然后换掉后端即可跨平台。
用 CSS 定制主题
一个小而完整记录的 CSS 子集设定每一个颜色和字体令牌,并按类型和状态为控件设置样式。在 Theme Studio 中实时编辑,并在混合应用中把同一份样式表应用到真正的 WinForms 或原生 Avalonia 控件上。
需要时再用 MVVM
Majorsilence.Forms.Mvvm 不借助反射就把 INotifyPropertyChanged 和 ICommand 接到控件上——裁剪和 AOT 安全,并能与 CommunityToolkit.Mvvm 和睦共处。可选启用,从不强制。
内核现代
GPU 加速的 Skia 渲染、HiDPI、触控手势、动画帧、当前版本的 .NET——外加 Majorsilence.Forms.Essentials,在每个平台上提供安全存储、文本转语音和打开链接。
可测试、可访问
一棵自动化树驱动进程内 UI 测试、面向 Selenium 的 W3C WebDriver 服务器、面向 AI 助手的 MCP 服务器、Windows 屏幕阅读器,以及浏览器中的 ARIA DOM 镜像。
异步对话框,无处不在
每个模态对话框都有一个异步孪生——ShowDialogAsync、MessageBox.ShowAsync——所以同一份代码也能在浏览器和手机上运行,那里不可能有阻塞式循环。随附的分析器会在你发布之前标出阻塞调用。
一个控件模型,底下是可替换的宿主。
Majorsilence.Forms 拥有控件和渲染;后端只负责把像素放到屏幕上并传递输入。正是这条接缝(seam)
让同一个应用今天面向 Avalonia、明天面向 Uno——或者原封不动地跑在终端里。核心多目标支持
net8.0、
net10.0 和 netstandard2.0;
WinForms 和 WPF 后端额外支持 net48,因此 .NET Framework 4.8
应用也能托管它。
Program.cs,原封不动。
using Majorsilence.Forms;
public class MainForm : Form
{
}
static void Main (string [] args)
{
Application.Run (new MainForm ());
}
回答把你带到这里的那个问题。
大多数人来这里都是为了找一件具体的事——Windows Forms 能不能在 Linux 上运行、一个 WinForms 兼容层真正的代价是什么、或者它与用 MAUI 或 Avalonia 重写相比如何。每个问题都有自己的页面。
跨平台 WinForms 详解
为什么 System.Windows.Forms 只能在 Windows 上运行、绕过它的三种方式,以及一个 API 兼容的重新实现要放弃什么。
WinForms 能在 Linux 上运行吗?
原样不行——Mono 的移植早已不在,GDI+ 也不存在。在 Ubuntu、Fedora 和 Debian 上有什么可行的替代方案,以及如何发布。
WinForms 能在 macOS 上运行吗?
Apple Silicon 和 Intel 上的原生 NSWindow、它哪些地方不像 Mac,以及如何打包 .app。
迁移现有应用
majorsilence-migrate CLI 完成机械性的重写——命名空间、项目文件、资源——并以可读的 git diff 呈现。
WinForms 替代方案对比
MAUI、Avalonia、Uno Platform、Eto.Forms、WPF 和 Wine——以各自能保留多少你现有代码来衡量。
常见问题
设计器文件(Designer.cs)还能用吗?有可视化设计器吗?VB.NET、DataGridView、System.Drawing 和生产就绪情况又如何?
最新动态
八月以来的进展:26.9.0、四个新后端、CSS 主题,以及行为审计
七周、557 次提交:GTK 4、Terminal、WinForms 和 WPF 宿主,.NET Framework 4.8 支持,CSS 主题,移动端和浏览器上仅限异步的对话框,以及一项你需要采取行动的绘制变更。
阅读全文 →Majorsilence.Forms 简介
一个 WinForms 风格的 UI 框架,用于把传统和现代的 WinForms 应用迁移到跨平台技术栈上——无需重写。
阅读全文 →平台后端:Avalonia、Uno 与 Headless
Majorsilence.Forms 用 SkiaSharp 自行绘制每一个控件——底下的窗口工具包只是一个宿主。这里介绍这条接缝(seam)是如何工作的。
阅读全文 →