mcpField
S
syncfusion-winforms-form

syncfusion-winforms-form

github.com/syncfusion设计与 UI280 次安装1 周前更新
代码仓库

关于 syncfusion-winforms-form

面向 Windows Forms 开发者的 Syncfusion SfForm 技能,用于自定义窗口外观和标题栏,并构建 MDI 应用。还介绍主题、阴影、圆角及本地化设置。

主要功能

  1. 01自定义标题栏样式与按钮
  2. 02在标题栏加载用户控件
  3. 03MDI 父子窗口管理
  4. 04主题、边框与阴影配置
  5. 05富文本标题和圆角
  6. 06资源文件本地化

适用场景

  1. 01为桌面应用设计品牌标题栏
  2. 02构建含多个文档窗口的编辑器
  3. 03统一企业应用的窗口主题
  4. 04为多语言应用本地化界面

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/syncfusion/winforms-ui-components-skills --skill syncfusion-winforms-form

安装后在 Claude Code 中输入/syncfusion-winforms-form确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
form-customization.md
getting-started.md
localization.md
mdi-customization.md
theming.md
titlebar-customization.md

详细介绍

实现 Windows Forms(SfForm)

Syncfusion SfForm 是一种高级窗口控件,适用于 Windows Forms 应用程序,可全面自定义窗体外观、标题栏中的自定义用户界面,并全面支持 MDI(多文档界面)。

何时使用此技能

在以下情况下使用 SfForm:

  • 自定义标题栏外观 - 颜色、文本对齐方式、按钮样式、自定义图标
  • 在标题栏中加载自定义控件 - 添加搜索框、导航控件或任何用户控件
  • 构建 MDI 应用程序 - 包含多个子窗口的父窗体
  • 应用专业主题 - 内置 Office 2016/2019 和高对比度主题
  • 自定义窗体边框 - 活动/非活动状态、颜色、粗细、圆角
  • 添加阴影效果 - 可自定义阴影不透明度,呈现现代外观
  • 在标题栏中支持富文本 - 在窗体标题中显示格式化文本
  • 本地化窗体元素 - 为全球化应用程序提供多语言支持

SfForm 与 MetroForm、Office2007Form 的区别:

  • 需要自定义标题栏控件并全面控制外观的现代应用程序,请使用 SfForm
  • 只需要标题图像和标签以及内置皮肤时,请使用 MetroForm
  • 需要采用 Microsoft Office 2007 样式 UI 和内置配色方案时,请使用 Office2007Form

主要功能

  • 标题栏自定义 - 高度、颜色、文本对齐方式、按钮自定义
  • 加载用户控件 - 在标题栏中放置任何 WinForms 控件
  • MDI 支持 - 全面的父窗体与子窗体管理
  • 边框自定义 - 活动/非活动边框颜色和粗细
  • 主题支持 - 6 种内置专业主题
  • 富文本支持 - 标题栏文本支持 RTF 格式
  • 阴影效果 - 可调节阴影不透明度
  • 圆角 - Windows 11 样式圆角
  • 本地化 - 全面支持资源文件

文档与导航指南

入门

📄 阅读: references/getting-started.md

  • 程序集部署与依赖项
  • 将标准 Form 转换为 SfForm
  • 基本设置与初始化
  • 初始自定义示例
  • 将用户控件加载到标题栏
标题栏自定义

📄 阅读: references/titlebar-customization.md

  • 调整标题栏高度
  • 文本对齐方式(水平和垂直)
  • 自定义标题栏按钮(图标、颜色、状态)
  • 隐藏按钮(最小化、最大化、关闭)
  • 在标题栏中设置富文本格式
  • 将用户控件加载到标题栏
  • 自定义图标和标题
窗体自定义

📄 阅读: references/form-customization.md

  • 设置和对齐窗体图标
  • 自定义边框(活动/非活动状态)
  • 配置阴影效果
  • 阴影不透明度设置
  • 圆角(Windows 11+)
MDI 自定义

📄 阅读: references/mdi-customization.md

  • 创建 MDI 父窗体
  • 添加 MDI 子窗体
  • 自定义子窗体外观
  • 获取活动的 MDI 子窗体
  • 处理 MDI 子窗体中的按键事件
主题

📄 阅读: references/theming.md

  • 加载主题程序集
  • 为窗体应用主题
  • 可用主题(Office2016/2019、HighContrast)
  • 主题自定义选项
本地化

📄 阅读: references/localization.md

  • 创建用于本地化的资源文件
  • 设置区域性和 UI 区域性
  • 在示例级别进行本地化
  • 编辑默认资源文件
  • 不同的程序集/命名空间配置

快速入门

步骤 1:添加程序集引用

将以下引用添加到项目中:

  • Syncfusion.Core.WinForms.dll
  • Syncfusion.Shared.Base.dll
步骤 2:将 Form 转换为 SfForm
using Syncfusion.WinForms.Controls;

namespace MyApplication
{
    public partial class Form1 : SfForm  // Change from Form to SfForm
    {
        public Form1()
        {
            InitializeComponent();
            
            // Basic customization
            this.Style.TitleBar.BackColor = Color.FromArgb(46, 46, 46);
            this.Style.TitleBar.ForeColor = Color.White;
        }
    }
}

VB.NET:

Imports Syncfusion.WinForms.Controls

Public Class Form1
    Inherits SfForm  ' Change from Form to SfForm
    
    Public Sub New()
        InitializeComponent()
        
        ' Basic customization
        Me.Style.TitleBar.BackColor = Color.FromArgb(46, 46, 46)
        Me.Style.TitleBar.ForeColor = Color.White
    End Sub
End Class
步骤 3:自定义外观
// Title bar button colors
this.Style.TitleBar.CloseButtonForeColor = Color.White;
this.Style.TitleBar.MinimizeButtonForeColor = Color.White;
this.Style.TitleBar.MaximizeButtonForeColor = Color.White;

// Button hover colors
this.Style.TitleBar.CloseButtonHoverBackColor = Color.Red;
this.Style.TitleBar.MinimizeButtonHoverBackColor = Color.DarkGray;
this.Style.TitleBar.MaximizeButtonHoverBackColor = Color.DarkGray;

// Form border
this.Style.Border = new Pen(Color.FromArgb(0, 122, 204), 2);
this.Style.InactiveBorder = new Pen(Color.Gray, 2);

常见模式

模式 1:深色主题窗体
public Form1()
{
    InitializeComponent();
    
    // Dark title bar
    this.Style.TitleBar.BackColor = Color.FromArgb(30, 30, 30);
    this.Style.TitleBar.ForeColor = Color.White;
    this.Style.TitleBar.Height = 35;
    
    // Button styling
    this.Style.TitleBar.CloseButtonForeColor = Color.White;
    this.Style.TitleBar.CloseButtonHoverBackColor = Color.FromArgb(232, 17, 35);
    this.Style.TitleBar.MinimizeButtonForeColor = Color.White;
    this.Style.TitleBar.MaximizeButtonForeColor = Color.White;
    
    // Border and shadow
    this.Style.Border = new Pen(Color.FromArgb(0, 122, 204), 2);
    this.Style.ShadowOpacity = 150;
    
    // Client area
    this.Style.BackColor = Color.FromArgb(45, 45, 48);
}
模式 2:带搜索控件的自定义标题栏
public Form1()
{
    InitializeComponent();
    
    // Create search panel
    FlowLayoutPanel searchPanel = new FlowLayoutPanel();
    searchPanel.Size = new Size(250, 28);
    searchPanel.FlowDirection = FlowDirection.LeftToRight;
    
    // Add search label
    Label searchLabel = new Label();
    searchLabel.Text = "Search:";
    searchLabel.ForeColor = Color.White;
    searchLabel.AutoSize = true;
    searchLabel.Margin = new Padding(5, 5, 5, 0);
    
    // Add search textbox
    TextBox searchBox = new TextBox();
    searchBox.Width = 180;
    searchBox.Margin = new Padding(5, 2, 0, 0);
    
    searchPanel.Controls.Add(searchLabel);
    searchPanel.Controls.Add(searchBox);
    
    // Load to title bar
    this.TitleBarTextControl = searchPanel;
    
    // Style title bar
    this.Style.TitleBar.BackColor = Color.FromArgb(0, 120, 215);
    this.Style.TitleBar.Height = 35;
}
模式 3:带子窗体的 MDI 父窗体
// Parent Form
public class MainForm : SfForm
{
    public MainForm()
    {
        InitializeComponent();
        
        // Enable MDI container
        this.IsMdiContainer = true;
        
        // Customize parent appearance
        this.Style.TitleBar.BackColor = Color.FromArgb(0, 122, 204);
        this.Style.TitleBar.ForeColor = Color.White;
    }
    
    private void CreateChildForm()
    {
        // Create child form
        SfForm childForm = new SfForm();
        childForm.Text = "Child Window 1";
        childForm.MdiParent = this;
        
        // Customize child appearance
        childForm.Style.TitleBar.BackColor = Color.White;
        childForm.Style.TitleBar.ForeColor = Color.Black;
        childForm.Style.Border = new Pen(Color.LightGray, 1);
        
        childForm.Show();
    }
}
模式 4:应用内置主题
// In Program.cs
static class Program
{
    [STAThread]
    static void Main()
    {
        // Register Syncfusion license
        Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR_LICENSE_KEY");
        
        // Load theme assemblies
        SfSkinManager.LoadAssembly(typeof(Office2016Theme).Assembly);
        SfSkinManager.LoadAssembly(typeof(Office2019Theme).Assembly);
        
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}

// In Form
public Form1()
{
    InitializeComponent();
    
    // Apply theme
    this.ThemeName = "Office2016Colorful";
}
模式 5:本地化窗体
public Form1()
{
    // Set culture before initialization
    System.Threading.Thread.CurrentThread.CurrentCulture = 
        new System.Globalization.CultureInfo("de-DE");
    System.Threading.Thread.CurrentThread.CurrentUICulture = 
        new System.Globalization.CultureInfo("de-DE");
    
    InitializeComponent();
}

主要属性

窗体属性
  • Style - 访问所有外观自定义选项
  • TitleBarTextControl - 将自定义用户控件加载到标题栏
  • AllowRoundedCorners - 启用 Windows 11 风格的圆角(bool)
  • ThemeName - 应用内置主题(string)
  • IsMdiContainer - 启用 MDI 父窗体模式(bool)
标题栏属性(Style.TitleBar)
  • Height - 标题栏高度(int)
  • BackColor - 标题栏背景颜色
  • ForeColor - 标题栏文本颜色
  • TextHorizontalAlignment - 左、居中、右
  • TextVerticalAlignment - 上、居中、下
  • IconHorizontalAlignment - 图标水平位置
  • IconVerticalAlignment - 图标垂直位置
  • AllowRichText - 启用 RTF 格式设置(bool)
按钮属性(Style.TitleBar)
  • CloseButtonForeColor - 关闭按钮图标颜色
  • MinimizeButtonForeColor - 最小化按钮图标颜色
  • MaximizeButtonForeColor - 最大化按钮图标颜色
  • CloseButtonHoverBackColor - 关闭按钮悬停时的背景颜色
  • CloseButtonPressedBackColor - 关闭按钮按下时的背景颜色
  • CloseButtonImage - 自定义关闭按钮图标
  • CloseButtonHoverImage - 自定义关闭按钮悬停图标
  • CloseButtonPressedImage - 自定义关闭按钮按下图标
边框和阴影属性(Style)
  • Border - 活动状态边框(Pen)
  • InactiveBorder - 非活动状态边框(Pen)
  • ShadowOpacity - 活动状态阴影不透明度(0-255)
  • InactiveShadowOpacity - 非活动状态阴影不透明度(0-255)

常见用例

用例 1:带自定义标题栏的现代应用

场景: 构建一款在标题栏中展示品牌标识的现代桌面应用
解决方案: 使用 TitleBarTextControl 加载包含徽标和导航控件的面板
参考: titlebar-customization.md

用例 2:支持 MDI 的文档编辑器

场景: 创建支持同时打开多个文档的文本编辑器
解决方案: 使用 MDI 父窗体,为每个文档创建子窗体
参考: mdi-customization.md

用例 3:具有统一品牌形象的企业应用

场景: 在应用的所有窗体中应用公司主题
解决方案: 使用内置主题,或通过 Style 属性创建自定义主题
参考: theming.md

用例 4:多语言应用

场景: 为国际用户支持多种语言
解决方案: 使用资源文件实现本地化
参考: localization.md

用例 5:极简窗体设计

场景: 创建简洁、无干扰且界面元素精简的窗体
解决方案: 隐藏标题栏按钮,使用自定义颜色并添加柔和阴影
参考: form-customization.md

与其他窗体控件的比较

功能SfFormMetroFormOffice2007Form
自定义标题栏控件✅ 是❌ 否❌ 否
MDI 支持✅ 是✅ 是✅ 是
活动/非活动边框✅ 是⚠️ 有限⚠️ 有限
富文本标题✅ 是❌ 否❌ 否
阴影自定义✅ 是❌ 否❌ 否
圆角✅ 是(Win11+)❌ 否❌ 否
主题支持✅ 6 种主题✅ 内置皮肤✅ Office 配色方案
标题栏图像✅ 是✅ 是✅ 是

建议: 若要获得最大的灵活性和现代功能,请使用 SfForm。仅在旧版应用或有特定样式要求时使用 MetroForm 或 Office2007Form。

提示和最佳实践

性能
  • 在显示窗体之前,于构造函数中设置所有样式属性
  • 添加多个控件时,使用 SuspendLayout()/ResumeLayout()
  • 妥善释放自定义图像和资源
设计
  • 将标题栏高度保持在 30-40 像素之间,以获得最佳外观
  • 使用微妙的阴影(不透明度 100-150),营造专业效果
  • 确保标题栏与按钮之间有足够的对比度
  • 在不同 DPI 设置下测试自定义标题栏控件
MDI 应用程序
  • 在创建子窗体之前设置 IsMdiContainer = true
  • 为所有子窗体应用一致的样式
  • 使用 ActiveMdiChild 管理当前子窗口
  • 考虑使用菜单条管理窗口
主题使用
  • 在创建窗体之前,于 Program.cs 中加载主题程序集
  • 在应用程序的所有窗体中应用一致的主题
  • 使用 HighContrast 主题进行测试,确保无障碍访问
  • 避免混用带主题和不带主题的窗体
无障碍访问
  • 确保标题栏文本具有足够的颜色对比度
  • 支持通过键盘导航所有自定义控件
  • 使用 Windows 高对比度设置进行测试
  • 确保自定义标题栏控件易于访问

故障排除

标题栏自定义控件不可见:

  • 确保控件大小适合标题栏高度
  • 检查控件的 Visible 属性是否为 true
  • 确认背景色不是透明的

主题未应用:

  • 确认已在 Program.cs 中加载主题程序集
  • 检查主题名称的拼写(区分大小写)
  • 确保在 InitializeComponent() 之后设置 ThemeName

MDI 子窗体未显示:

  • 确认父窗体的 IsMdiContainer = true
  • 检查子窗体的 MdiParent 是否设置正确
  • 确保使用 .Show() 而不是 .ShowDialog() 显示子窗体

边框未显示:

  • 确认 FormBorderStyle 不是 None
  • 检查 Border 笔的宽度是否大于 0
  • 确保边框颜色与背景形成对比

相关组件

  • MetroForm - 具有内置 Metro 样式的替代窗体
  • Office2007Form - 具有 Office 2007 外观的替代窗体
  • Ribbon - 用于标题栏区域中的 Office 风格功能区界面
  • SfSkinManager - 用于全局应用主题

其他资源

  • API 参考: SfForm 类文档
  • 示例应用程序: 在安装目录中查找完整示例
  • 支持: Syncfusion 社区论坛

评论

支持 Markdown