尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
WinForm 自定义控件常用特性详解(Browsable/Category/Description/DefaultValue/DesignerCategory)
一、整体概述在 WinFormUserControl 自定义控件开发中可以通过一系列设计器特性控制属性在 VS 属性面板的展示样式、分类、默认值、提示信息同时可以手动手写布局控件脱离可视化设计器实现纯代码自定义控件。所有特性仅对VS设计器生效不影响程序运行逻辑。二、五大核心控件特性重点必考1. [Browsable(bool)] 可见性特性作用控制属性是否在 VS 右侧【属性面板】显示Browsable(true)默认值属性公开展示Browsable(false)属性隐藏属性面板看不到仅代码可用2. [Category(分组名)] 分类特性作用将自定义属性归类到指定分组整理属性面板界面案例[Category(佛得角)]、[Category(阿根廷)]自定义名称随意分组仅用于设计器展示无运行影响3. [Description(描述信息)] 备注特性作用鼠标选中属性时在VS底部展示属性功能说明用于提示使用者当前属性的作用提升控件易用性4. [DefaultValue(默认值)] 默认值特性核心视觉效果最特殊属性值 默认值 → 字体正常显示属性值 ≠ 默认值 → 字体加粗标识为已修改属性注意该特性不会自动赋值仅做设计器标记真正默认值需在代码/构造函数赋值。5. [DesignerCategory(Code)] 设计器特性作用标记当前类为纯代码类告诉VS此类没有可视化设计界面禁止打开拖拽设计窗口多用于手写布局的自定义控件6. [Obsolete] 兼容特性可用于控件属性标记标识属性过时、不推荐使用设计器会提示警告。三、可视化自定义控件带设计器完整源码继承 UserControl、自带可视化界面属性绑定文本框搭配全套设计特性using System; using System.ComponentModel; using System.Windows.Forms; namespace _7_自定义控件常用的特性 { public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } /// summary /// 账号属性绑定文本框配置全套设计器特性 /// /summary [Browsable(true)] // 属性面板可见 [Category(佛得角)] // 自定义分组 [Description(账号的内容)] // 属性描述说明 [DefaultValue(佛得角)] // 默认标记值控制加粗样式 public string Account { get { return textBox1.Text; } set { textBox1.Text value; } } /// summary /// 密码属性标记过时 /// /summary [Description(密码)] [Category(阿根廷)] [DefaultValue(123)] [Obsolete(不建议使用此属性)] public string Password { get { return textBox2.Text; } set { textBox2.Text value; } } } }四、纯手写自定义控件无设计器完整源码不使用可视化拖拽纯代码创建所有控件、布局搭配 DesignerCategory 特性using System.Windows.Forms; namespace _7_自定义控件常用的特性 { // 标记为纯代码类禁止打开设计器 [DesignerCategory(Code)] internal class UserLoin : UserControl { // 手动声明所有子控件 private Label label1; private TextBox textBox1; private Label label2; private TextBox textBox2; private Button button1; public UserLoin() { InitializeComponent(); } // 纯代码初始化所有控件、位置、样式、布局 private void InitializeComponent() { this.label1 new System.Windows.Forms.Label(); this.textBox1 new System.Windows.Forms.TextBox(); this.label2 new System.Windows.Forms.Label(); this.textBox2 new System.Windows.Forms.TextBox(); this.button1 new System.Windows.Forms.Button(); this.SuspendLayout(); // label1 账号标签 this.label1.AutoSize true; this.label1.Location new System.Drawing.Point(97, 51); this.label1.Name label1; this.label1.Size new System.Drawing.Size(70, 24); this.label1.TabIndex 0; this.label1.Text 账号:; // textBox1 账号输入框 this.textBox1.Location new System.Drawing.Point(207, 51); this.textBox1.Name textBox1; this.textBox1.Size new System.Drawing.Size(244, 35); this.textBox1.TabIndex 1; // label2 密码标签 this.label2.AutoSize true; this.label2.Location new System.Drawing.Point(97, 128); this.label2.Name label2; this.label2.Size new System.Drawing.Size(70, 24); this.label2.TabIndex 0; this.label2.Text 密码:; // textBox2 密码输入框 this.textBox2.Location new System.Drawing.Point(207, 125); this.textBox2.Name textBox2; this.textBox2.Size new System.Drawing.Size(244, 35); this.textBox2.TabIndex 1; // button1 登录按钮 this.button1.Location new System.Drawing.Point(207, 240); this.button1.Name button1; this.button1.Size new System.Drawing.Size(131, 52); this.button1.TabIndex 2; this.button1.Text 登录; this.button1.UseVisualStyleBackColor true; // 将所有控件添加到自定义控件容器 this.Controls.Add(this.button1); this.Controls.Add(this.textBox2); this.Controls.Add(this.label2); this.Controls.Add(this.textBox1); this.Controls.Add(this.label1); // 控件基础配置 this.Name UCLogin; this.Size new System.Drawing.Size(585, 359); this.ResumeLayout(false); this.PerformLayout(); } } }五、核心特性效果总结特性核心作用设计器运行影响Browsable控制属性面板是否显示该属性无Category属性自定义分组归类无Description属性底部描述提示无DefaultValue控制属性字体加粗/正常样式不自动赋值仅标记DesignerCategory禁用可视化设计器标记纯代码类无Obsolete标记属性过时弹出警告可正常运行仅提示六、手写自定义控件核心流程新建类继承UserControl添加[DesignerCategory(Code)]禁用设计器手动声明所有内部控件Label/TextBox/Button自定义 InitializeComponent 方法设置控件坐标、大小、文本Controls.Add() 将子控件加入容器配置整体控件尺寸、布局七、易错点汇总DefaultValue不会初始化默认值仅修改设计器样式新手极易误解所有设计器特性只在VS编辑界面生效运行无任何逻辑影响手写控件必须手动 Add 子控件否则界面空白不显示未加 DesignerCategory 会默认打开可视化设计器导致代码冲突Browsablefalse 只是隐藏属性代码依然可以正常读写八、背诵口诀Browsable显隐藏Category分好帮Description写说明Default控粗样Designer纯代码手写控件最自强特性只改设计面运行逻辑不影响。
RELATED

相关推荐

【python零基础教程第18讲】GIL全局解释器锁 深度解析

【python零基础教程第18讲】GIL全局解释器锁 深度解析

Python GIL(全局解释器锁)深度解析:理解、影响与应对策略 引言 在Python多线程编程中,有一个绕不开的话题——全局解释器锁(Global Interpreter Lock,简称GIL)。它既是Python初学者最容易困惑的…

📅 2026/8/20 21:42:57
如何通过开源工具实现WeMod高级功能本地化增强

如何通过开源工具实现WeMod高级功能本地化增强

如何通过开源工具实现WeMod高级功能本地化增强 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 想要深度定制WeMod游戏修改器的用户体验&#xff0c…

📅 2026/8/20 21:42:58
终极宝可梦随机化工具:Universal Pokemon Randomizer ZX 完整使用指南

终极宝可梦随机化工具:Universal Pokemon Randomizer ZX 完整使用指南

终极宝可梦随机化工具:Universal Pokemon Randomizer ZX 完整使用指南 【免费下载链接】universal-pokemon-randomizer-zx Public repository of source code for the Universal Pokemon Randomizer ZX 项目地址: https://gitcode.com/gh_mirrors/un/universal-po…

📅 2026/8/20 21:42:59
MORE NEWS

更多资讯

📰

Apache Airflow 接入 Akeyless 密钥后端:Connections、Variables 与配置项的统一托管实践

Apache Airflow 接入 Akeyless 密钥后端:Connections、Variables 与配置项的统一托管实践 【免费下载链接】airflow Apache Airflow - A platform to programmatically author, schedule, and monitor workflows 项目地址: https://gitcode.com/GitHub_Trending/a…

📰

Lucide React Filled Icons 实战指南:利用 SVG fill 实现实心星级评分

Lucide React Filled Icons 实战指南:利用 SVG fill 实现实心星级评分 【免费下载链接】lucide Beautiful & consistent icon toolkit made by the community. Open-source project and a fork of Feather Icons. 项目地址: https://gitcode.com/GitHub_Trend…

📰

Prometheus监控临时任务的Pushgateway解决方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Bazel 迁移指南:将 Xcode 项目迁移到 Bazel 构建系统

Bazel 迁移指南:将 Xcode 项目迁移到 Bazel 构建系统 【免费下载链接】bazel a fast, scalable, multi-language and extensible build system 项目地址: https://gitcode.com/GitHub_Trending/ba/bazel 本文是 Bazel 官方迁移指南《Migrating from Xcode to…

📰

阿里开源Agent项目实战:从框架原理到业务落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

WezTerm Lua API 深度解析:`wezterm.color.gradient` 颜色渐变采样实战

WezTerm Lua API 深度解析:wezterm.color.gradient 颜色渐变采样实战 【免费下载链接】wezterm A GPU-accelerated cross-platform terminal emulator and multiplexer written by wez and implemented in Rust 项目地址: https://gitcode.com/GitHub_Trending/we…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬