Zhouyaowei.ZYWControls
1.0.36
dotnet add package Zhouyaowei.ZYWControls --version 1.0.36
NuGet\Install-Package Zhouyaowei.ZYWControls -Version 1.0.36
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Zhouyaowei.ZYWControls" Version="1.0.36" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Zhouyaowei.ZYWControls" Version="1.0.36" />
<PackageReference Include="Zhouyaowei.ZYWControls" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Zhouyaowei.ZYWControls --version 1.0.36
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Zhouyaowei.ZYWControls, 1.0.36"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Zhouyaowei.ZYWControls@1.0.36
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Zhouyaowei.ZYWControls&version=1.0.36
#tool nuget:?package=Zhouyaowei.ZYWControls&version=1.0.36
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
ZYWControls - 增强型WinForm控件库
ZYWControls 是一套基于 .NET 9.0 Windows Forms 的增强型控件库,提供多种高频使用的自定义控件。控件支持可视化设计器配置、丰富的外观自定义和实用的数据处理功能,帮助开发者快速构建美观、高效的WinForm应用。
🔧 安装说明
通过 NuGet 包管理器快速安装:
Install-Package Zhouyaowei.ZYWControls
或通过 .NET CLI 安装:
dotnet add package Zhouyaowei.ZYWControls
环境要求
- .NET 9.0 及以上
- Windows 操作系统(依赖 Windows Forms)
- 支持设计器的 IDE(Visual Studio 2022+ 推荐)
📋 控件清单及核心功能
1. ZYWButton - 圆角呼吸灯按钮
- 支持自定义圆角半径(0-任意整数)
- 三种状态渐变颜色配置(默认/悬停/按下)
- 可选呼吸灯动画(可调节速度、幅度)
- 内置多类型数据绑定(字符串/整型/Action委托等)
- 内置 Material Icons (Google) 图标显示:字体与映射表作为嵌入资源打包,无需安装字体即可显示图标。支持「图标名称」(如
home)或「Unicode 码位」(如0xE88A)两种方式指定,图标颜色随按钮状态(悬停/按下/禁用)变化,并支持图标与文本的左/右/上/下排版 - 图标可视化选择器:
IconName属性支持下拉选择——搜索中英文名称、记录最近使用、一键打开大窗口浏览全部 2234 个图标,不必记忆图标名或编码(详见 2.1 节)
2. ZYWComboBox - 增强型下拉框
- 支持自定义边框(颜色、粗细、各边可见性)
- 键值对(KeyValueItem)数据绑定,支持附加对象
- 提供DataTable/列表数据加载、选中项快速定位
- 线程安全的Items集合操作,避免UI卡顿
3. ZYWDatePicker - 智能日期选择器
- 自定义边框样式与ZYWTextBox保持视觉统一
- 预设8种默认日期(当天/本周首尾/本月首尾等)
- 支持自定义日期偏移(当前日期±N天)
- 天级时间戳转换(基于指定起始日期)
4. ZYWMemoBox - 多行文本框
- 强制多行模式,支持回车/制表符输入
- 自定义边框+滚动条配置
- 文本插入/追加操作,自动清除超限内容
- 支持TXT/HTML文件读写(自动识别编码)
5. ZYWTabControl - 圆角标签页
- 标签圆角半径、边框颜色/粗细自定义
- 支持标签渐变背景(默认/选中状态分别配置)
- 标签宽高固定设置,避免自适应混乱
- 高质量绘制,无闪烁、无锯齿
- 内置 Material Icons 标签图标:通过
TabIcons按 TabPages 顺序设置各标签图标(逗号分隔的名称或码位),TabIconSize/TabIconColor控制大小与颜色,图标显示在文字左侧并整体居中 - 标签 ToolTip 提示:通过
TabToolTips(逗号分隔,按 TabPages 顺序)为每个标签配置鼠标悬停提示
6. ZYWTableView - 高级表格控件
- 奇偶行交替背景色,选中行高亮样式自定义
- 行号显示控制(显示/隐藏、宽度调整)
- 列配置持久化(保存/加载/重置列布局)
- 支持DataTable绑定,选中行数据快速提取
- 列编辑功能(通过配置文件调整表头/可见性/冻结状态)
- 单元格 ToolTip 提示:订阅
CellToolTipTextNeeded事件设置e.ToolTipText,即可为不同单元格显示悬停提示
7. ZYWTextBox - 增强型单行文本框
- 支持占位符提示(文本/颜色自定义)
- 四种输入类型限制(整型/小数/正数等)
- 自定义边框样式,支持单独控制各边显示
- 禁止粘贴非法内容,输入实时校验
8. ZYWFormTabControl - 窗体标签控件
- 全方位样式自定义
- 人性化交互功能
- 窗体嵌入核心能力
- 设计器友好性
- 内置 Material Icons 标签图标:同 ZYWTabControl,支持
TabIcons/TabIconSize/TabIconColor为各窗体标签加图标 - 标签 ToolTip 提示:同 ZYWTabControl,支持
TabToolTips为各窗体标签配置鼠标悬停提示
9. ZYWPlayPictureBox - 图片播放控件
- 灵活的播放控制
- 状态自动切换
- 高性能与安全性
- 资源友好
10. ZYWToggleSwitch - 开关控件
- 基础交互能力
- 高度可定制化样式
- 开发友好特性
- 事件支持
🎨 快速使用示例
1. ZYWButton 呼吸灯按钮示例
var btn = new ZYWControls.ZYWButton();
btn.Text = "提交";
btn.CornerRadius = 10; // 圆角半径
btn.BreathingEffectActive = true; // 启用呼吸灯
btn.BreathingInterval = 30; // 动画流畅度
btn.BreathingChange = 40; // 颜色变化幅度
btn.Click += (s, e) => MessageBox.Show("按钮点击触发");
this.Controls.Add(btn);
2. ZYWButton 显示 Material Icons 图标示例
var btn = new ZYWControls.ZYWButton();
btn.Text = "首页";
// 方式一:使用图标名称(内置 2234 个图标)。
// 设计器中:选中 IconName 属性,点击右侧下拉箭头即可打开「图标选择器」可视化挑选
btn.IconName = "home";
// 方式二:或直接使用 Unicode 码位(优先级高于 IconName),适合已知编码时快速输入
// btn.IconCode = 0xE88A;
btn.IconSize = 18; // 图标字号(pt)
btn.IconColor = Color.White; // 图标颜色(Color.Transparent 时跟随文字色)
btn.IconPosition = ZYWControls.IconPosition.Left; // 图标位置:Left/Right/Top/Bottom
btn.IconGap = 6; // 图标与文本间距(px)
this.Controls.Add(btn);
// 运行时也让用户自己挑图标(返回 null=取消,string.Empty=用户清除图标)
string? picked = ZYWControls.MaterialIconPickerForm.ShowPicker(btn.IconName, this);
if (picked != null) btn.IconName = picked;
2.1 图标选择器(可视化挑选,无需记忆名称)
IconName 属性自带下拉编辑器,无需再手写编码:
- 搜索:支持英文名称(
home)与中文关键词(铃铛、通知、购物车),内置 497 条常用中文别名;空格分词,多词需全部命中 - 最近使用:自动记录最近选过的图标,跨项目持久化保存,日常复用基本一次点击完成
- 浏览全部…:打开 1000×700 的大窗口通览全部 2234 个图标,下拉面板本身也可拖动边框放大
- 快捷键:
↑↓←→移动、Enter确认、Esc取消、滚轮翻页 - 属性预览:属性窗口左侧会直接画出该图标的字形预览
工具方法(MaterialIcon)同时也公开了检索能力,可自行扩展 UI:
// 全部图标:MaterialIcon.AllIcons
IReadOnlyList<ZYWControls.MaterialIconItem> icons = ZYWControls.MaterialIcon.Search("齿轮");
foreach (var item in icons)
Console.WriteLine($"{item.Name} {item.Aliases} 0x{(int)item.Char:X4}");
也可以直接使用工具类 MaterialIcon 在其他控件(如 ZYWTabControl)中绘制图标:
using (var font = ZYWControls.MaterialIcon.CreateFont(20))
using (var brush = new SolidBrush(Color.Black))
{
e.Graphics.DrawString(ZYWControls.MaterialIcon.ParseIcon("settings").ToString(), font, brush, x, y);
}
3. ZYWTabControl / ZYWFormTabControl 标签图标示例
var tab = new ZYWControls.ZYWTabControl();
tab.TabPages.Add("首页");
tab.TabPages.Add("设置");
tab.TabPages.Add("关于");
// 按 TabPages 顺序指定图标(名称或码位,逗号分隔),空项表示不显示图标
tab.TabIcons = "home,settings,info";
// 或混合使用码位: tab.TabIcons = "home,0xE8B8,info";
tab.TabIconSize = 14; // 图标字号(pt)
tab.TabIconColor = Color.Transparent; // Transparent 时跟随标签文字颜色
this.Controls.Add(tab);
4. ZYWTableView 表格数据绑定示例
// 1. 创建表格控件
var tableView = new ZYWControls.ZYWTableView();
tableView.Dock = DockStyle.Fill;
tableView.RowOddBackColor = Color.White;
tableView.RowEvenBackColor = Color.FromArgb(245, 245, 245);
// 2. 准备测试数据
var dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Rows.Add(1, "测试数据1");
dt.Rows.Add(2, "测试数据2");
// 3. 绑定数据
var result = tableView.LoadData(dt);
if (!result.isok)
{
MessageBox.Show(result.msg);
}
this.Controls.Add(tableView);
5. 控件 ToolTip 提示信息示例
所有 ZYW 控件均内置 ToolTipText 属性,鼠标悬停即可显示提示信息(无需额外添加 ToolTip 组件):
var btn = new ZYWControls.ZYWButton();
btn.Text = "保存";
btn.ToolTipText = "点击保存当前修改"; // 鼠标悬停时显示提示
var tab = new ZYWControls.ZYWTabControl();
tab.TabPages.Add("首页");
tab.TabPages.Add("设置");
// 各标签的提示(逗号分隔,按 TabPages 顺序,空项无提示)
tab.TabToolTips = "返回首页,打开系统设置";
this.Controls.Add(btn);
this.Controls.Add(tab);
特殊能力:
- TabControl 系列(ZYWTabControl / ZYWFormTabControl)额外支持
TabToolTips:逗号分隔的标签提示,鼠标移到对应标签时自动切换显示。 - ZYWTableView 额外支持单元格提示:订阅
CellToolTipTextNeeded事件,在事件中设置e.ToolTipText即可按单元格显示提示:
tableView.CellToolTipTextNeeded += (s, e) =>
{
if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
{
e.ToolTipText = $"第 {e.RowIndex + 1} 行,第 {e.ColumnIndex + 1} 列";
}
};
- 支持
ToolTipText的控件:ZYWButton、ZYWToggleSwitch、ZYWPicCheckBox、ZYWPlayPictureBox、ZYWTabControl、ZYWFormTabControl、ZYWTextBox、ZYWMemoBox、ZYWRichTextBox、ZYWComboBox、ZYWDatePicker、ZYWTableView。
3. ZYWTextBox 带占位符和输入限制
var txt = new ZYWControls.ZYWTextBox();
txt.Placeholder = "请输入正数(最多2位小数)";
txt.PlaceholderColor = Color.LightGray;
txt.InputType = ZYWControls.ZYWTextBox.InputDataType.正数小数;
txt.BorderBottomVisble = true; // 仅显示底边框
txt.BorderColor = Color.FromArgb(0, 100, 180);
this.Controls.Add(txt);
⚙️ 设计器支持
所有控件的自定义属性均已分类整理,在Visual Studio设计器中可直接配置:
- 外观扩展:边框、颜色、圆角等样式属性
- 数据扩展:默认值、输入限制、数据绑定等
- 动画效果:仅ZYWButton的呼吸灯相关配置
属性修改后实时生效,无需手动编写代码刷新。
📌 版本信息
- 当前版本:1.0.10
- 更新日志:
- v1.0.10:包含10种核心控件
- 支持设计器可视化配置
- 完善的异常处理和资源释放
🤝 反馈与贡献
- 若发现BUG或有功能需求,请提交Issue
- 欢迎Fork仓库,提交Pull Request完善控件功能
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0-windows7.0 is compatible. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net9.0-windows7.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.36 | 92 | 9/14/2026 |
| 1.0.35 | 114 | 8/18/2026 |
| 1.0.34 | 110 | 8/17/2026 |
| 1.0.33 | 110 | 8/12/2026 |
| 1.0.32 | 107 | 8/11/2026 |
| 1.0.31 | 130 | 3/25/2026 |
| 1.0.30 | 124 | 3/24/2026 |
| 1.0.29 | 118 | 3/24/2026 |
| 1.0.28 | 117 | 3/23/2026 |
| 1.0.25 | 123 | 3/21/2026 |
| 1.0.24 | 120 | 3/18/2026 |
| 1.0.23 | 128 | 2/27/2026 |
| 1.0.22 | 122 | 2/26/2026 |
| 1.0.21 | 123 | 2/26/2026 |
| 1.0.20 | 122 | 2/25/2026 |
| 1.0.19 | 130 | 2/25/2026 |
| 1.0.18 | 124 | 2/24/2026 |
| 1.0.17 | 139 | 2/12/2026 |
| 1.0.14 | 127 | 2/10/2026 |
| 1.0.13 | 126 | 2/9/2026 |
Loading failed