(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,修改窗体基类是必做步骤

相关推荐
吴可可1236 小时前
多段线局部约束缩放实现
c#
棉晗榜10 小时前
C# HttpClient配置具有tls指纹发起跟浏览器一样的请求解决反爬虫防护
开发语言·爬虫·c#
吴可可12310 小时前
在CAD中点击添加多段线顶点的方法与实现
c#
全栈小511 小时前
【C#】.net core,静态方法线程安全解析,面试时经常被问的线程安全就藏在里面
安全·c#·.netcore
天下无敌笨笨熊12 小时前
C#视频开发心得
开发语言·c#·音视频
LccKyI12 小时前
C#基础编程 面试题汇总(三)
笔记·c#
半亩码田14 小时前
C#转Python第4.1篇:当 try-catch 遇上 try-except:异常处理的大不同
开发语言·python·c#
z落落14 小时前
C# Modbus-RTU 串口读写设备+CRC16+邮件告警
开发语言·c#
DS随心转小程序15 小时前
Gemini只能导出了一部分Word文档,很少的一部分,不是我这个窗口所有的对话内容?
开发语言·人工智能·c#·word·豆包·deepseek·ai导出鸭
格林威15 小时前
C# 相机图像配合频闪光源:实现高速稳定拍摄的几个方法
开发语言·网络·人工智能·数码相机·计算机视觉·c#·视觉检测