(c#)System.Windows -> SunnyUI

要将标准的 System.Windows.Forms.TabControl 转换为 SunnyUI 风格的 Sunny.UI.UITabControl,核心是替换控件类型迁移属性,以下是两种最直接的实现方法

方法一:直接替换控件(推荐,适合已布局好的项目)

如果TabControl 已经添加了选项卡和内容,直接修改代码文件即可保留原有布局,无需重建:

  1. 关闭窗体设计器:确保当前窗体的设计界面已关闭,仅保留代码视图。

  2. 打开窗体的设计器代码文件 :在 "解决方案资源管理器" 中,展开你的窗体文件(如 Form1.cs),双击打开 Form1.Designer.cs(若隐藏,点击 "显示所有文件")。

  3. 批量替换类型 :按下 Ctrl+F 打开搜索框,在该文件中搜索 System.Windows.Forms.TabControl,将其全部替换Sunny.UI.UITabControl。 重点检查两处: ① 控件声明行:private System.Windows.Forms.TabControl tabControl1;private Sunny.UI.UITabControl tabControl1; ② 实例化行:this.tabControl1 = new System.Windows.Forms.TabControl();this.tabControl1 = new Sunny.UI.UITabControl();

  4. 添加命名空间 :在 Form1.Designer.cs 文件的顶部,确认已添加 SunnyUI 命名空间(若没有则手动添加):

    复制代码
    using Sunny.UI;
  5. 保存并刷新设计器 :保存文件后,重新打开窗体设计器,此时 tabControl1 已变为 UITabControl,属性面板会自动显示图二的 SunnyUI 专属配置项。

方法二:重新添加控件

步骤 1:确认 SunnyUI 控件已加载到工具箱

  1. 在 Visual Studio 右侧 / 左侧的 工具箱 面板中,右键点击任意空白处 → 选择 选择项
  2. 在弹出的「选择工具箱项」窗口中,点击 浏览 按钮 → 找到你项目中 NuGet 安装的 SunnyUI.dll 文件。
  3. 选中 SunnyUI.dll 后点击「确定」
  4. Visual Studio 加载第三方控件时,若控件没有指定「默认分组名称」,就会默认归类到「菜单和工具栏」(或「所有 Windows 窗体」)分组,这只是显示归类问题,控件的功能、使用方式完全不受影响
  5. (可选) 手动创建「SunnyUI」分组 (1)打开工具箱,在任意空白处右键 → 选择 添加选项卡 → 输入名称 SunnyUI(按回车确认),此时工具箱会新增一个空的「SunnyUI」分组。 (2)在「菜单和工具栏」分组里,找到所有以 UI 开头的控件(比如 UITabControlUIButtonUILabel 等):拖进该分组即可

步骤 2:配置 SunnyUI 专属样式

在属性面板中,找到 SunnyUI 专属的样式属性(这些是图二特有的,普通 TabControl 没有)

常用属性 作用说明 示例值
TabPosition 选项卡位置 Left(左侧)
FillColor 控件背景色 245,245,245(浅灰)
TabNormalColor 未选中选项卡的颜色 220,220,220
TabSelectedColor 选中选项卡的颜色 60,160,255(蓝色)
TabSelectedForeColor 选中选项卡的文字颜色 255,255,0(黄色)
ShowRect 是否显示控件边框 True/False
Font 选项卡文字字体(SunnyUI 适配) 微软雅黑,9pt

新手遇到的问题:

拖拽 SunnyUI 控件报「空引用」错误,核心原因是窗体未继承 UIForm,修改窗体基类是必做步骤

相关推荐
CSharp精选营9 小时前
.NET 8 性能优化实战:让你的应用起飞
性能优化·c#·.net·技术干货
fie888913 小时前
C# 文件分割与合并工具设计与实现
开发语言·c#
ytttr87315 小时前
C# 读取数据库表结构工具设计与实现
开发语言·数据库·c#
鸽子一号15 小时前
c#笔记之lambda表达式和linq
笔记·c#·linq
qq_3911053416 小时前
TDengine C# 连接示例和授权管理
大数据·数据库·c#·时序数据库·tdengine
a177988771217 小时前
小程序码的生成与获取码中的scene
小程序·c#
无风听海17 小时前
.NET10之C# Target-typed new expression深入解析
windows·c#·.net
这辈子谁会真的心疼你18 小时前
怎么修改pdf文档属性?介绍三个方法
数据库·pdf·c#
初九之潜龙勿用1 天前
C# 解决“因为算法不同,客户端和服务器无法通信”的问题
服务器·开发语言·网络协议·网络安全·c#
net3m331 天前
C#插件化架构(Plugin Architecture)或 可插拔架构,根据产品类型编码的不同自动路由到目标函数,而无需为每个产品都编码相应的代码!!
重构·c#