主题
WinForms
UI框架
| UI | WinForms | WinUI3 | WPF | UWP | .NET MAUI |
|---|---|---|---|---|---|
| 跨平台 | × | × | × | × | √ |
| 开发语言 | C#、VB | C#、C++ | C#、VB | C#、C++、VB | C# |
| UI语言 | 代码 | XAML | XAML | XAML | XAML/代码 |
| UI设计器 | √ | × | √ | √ | × |
| 适用场景 | 传统桌面 | 现代化桌面 | 复杂企业级应用 | 跨设备 | 跨平台移动和桌面 |
- WinForms:最早的桌面应用开发框架,易于学习和使用,设计风格较为传统,缺乏现代化 UI 元素和动画效果。
- WinUI3:微软最新推出的 UI 框架,基于 UWP 和 Win32,使用 Fluent Design System ,致力于为 Win10 和 Win11 应用程序提供现代化的用户界面。
- WPF:支持数据绑定、MVVM模式,提供强大的图形处理能力,包括2D和3D图形、动画、模板等,适用于复杂桌面应用。
- UWP:微软的通用 Windows 平台,适用于 Windows 10/11、Xbox、HoloLens 等设备。
- .NET MAUI:现代化跨平台的 UI 框架。
布局
注意
.Net Framework 4.8 以及之前的版本在高分辨率(比如4K)且进行缩放的显示器下,设计的布局和运行时的布局可能会有差异,尤其是带有固定值的布局,如 SplitContainer 中的 SplitterDistance 属性。
如果是新项目,最好选择 .Net >= 6.0 的版本开发。
边界布局
- Anchor属性:定义某个控件绑定到容器的边界。当控件锚定到某个容器的边缘时,控件边缘与容器边缘之间的距离将保持不变。注意:Anchor 属性只能锚定直接父容器,不能锚定其它控件。
- Dock 属性:一般配合 Panel 使用。
| Dock可选值 | 位置 | 设计时行为 |
|---|---|---|
| Top | 靠上 | 宽度自适应,高度可手动调整 |
| Bottom | 靠下 | 宽度自适应,高度可手动调整 |
| Fill | 填充整个区域 | 宽度和高度均自适应,无法手动调整 |
| Left | 靠左 | 高度自适应,宽度可手动调整 |
| Right | 靠右 | 高度自适应,宽度可手动调整 |
流式布局
FlowLayoutPanel容器,类似 CSS 中的 flexbox 布局。属性 FlowDirection 可调整方向。
网格布局
TableLayoutPanel容器,类似 CSS 中的 grid 布局。行列均可按百分比、或绝对值、或自动调整来设置宽高。
分割布局
SplitContainer容器,将容器按水平或垂直方向分割成两个容器,中间会有分割线,运行时也可移动分割线调整容器的大小。
标签页布局
TabControl容器,将容器按标签页的方式进行布局,标签页可自定义。
分组布局
GroupBox容器,将容器按分组的方式进行布局,可自定义分组标题。
面板布局
Panel容器