KryptonPropertyGrid ✓ LCode 已集成 Toolkit
命名空间:Krypton.Toolkit · 程序集:Krypton.Toolkit.dll
简介
KryptonPropertyGrid 是增强型属性网格控件,替代标准 System.Windows.Forms.PropertyGrid。它自动跟随 Krypton 主题渲染,以分类/字母排序方式展示对象的公开属性,支持属性编辑、分类折叠、描述面板等。常用于设计器、配置编辑器、对象检查器等场景。
常用属性
| 属性 | 类型 | 说明 |
|---|---|---|
SelectedObject | object | 当前展示属性的目标对象 |
SelectedObjects | object[] | 多对象选择(显示公共属性) |
PropertySort | PropertySort | 排序方式(Categorized / Alphabetical / NoSort) |
HelpVisible | bool | 是否显示底部描述面板 |
ToolbarVisible | bool | 是否显示顶部工具栏(排序切换按钮) |
BackColor | Color | 网格背景色 |
ForeColor | Color | 网格文字颜色 |
LineColor | Color | 网格线颜色 |
CategoryForeColor | Color | 分类标题文字颜色 |
CommandsVisibleIfAvailable | bool | 是否显示属性命令按钮 |
Dock | DockStyle | 停靠方式(常用于 Fill) |
快速上手
基本用法
using Krypton.Toolkit;
// 创建属性网格
var propertyGrid = new KryptonPropertyGrid();
propertyGrid.Dock = DockStyle.Fill;
propertyGrid.HelpVisible = true;
propertyGrid.ToolbarVisible = true;
propertyGrid.PropertySort = PropertySort.Categorized;
// 展示某个对象的属性
propertyGrid.SelectedObject = this; // 显示当前窗体的属性
this.Controls.Add(propertyGrid);
展示自定义对象
using System.ComponentModel;
// 定义带描述特性的配置类
public class AppSettings
{
[Category("外观")]
[Description("窗口标题文字")]
public string Title { get; set; } = "我的应用";
[Category("外观")]
[Description("主题颜色")]
public Color ThemeColor { get; set; } = Color.Teal;
[Category("行为")]
[Description("启动时是否最大化")]
public bool StartMaximized { get; set; } = false;
[Category("行为")]
[Description("自动保存间隔(秒)")]
public int AutoSaveInterval { get; set; } = 60;
}
// 展示配置对象
var settings = new AppSettings();
propertyGrid.SelectedObject = settings;
// 属性值修改后应用
propertyGrid.PropertyValueChanged += (s, e) =>
{
ApplySettings(settings);
};
进阶用法
对象检查器(选中控件显示其属性)
// 点击窗体上的控件时,在属性网格中显示该控件的属性
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control ctrl in this.Controls)
{
ctrl.Click += (s, ev) =>
{
propertyGrid.SelectedObject = s as Control;
};
}
}
// 属性修改后刷新目标控件
propertyGrid.PropertyValueChanged += (s, e) =>
{
if (propertyGrid.SelectedObject is Control ctrl)
{
ctrl.Refresh();
}
};
多对象编辑(公共属性)
// 同时选中多个控件,编辑它们的公共属性
var selectedControls = new object[] { button1, button2, button3 };
propertyGrid.SelectedObjects = selectedControls;
// 修改 Font 属性会同时应用到所有选中的按钮
propertyGrid.PropertyValueChanged += (s, e) =>
{
foreach (var obj in propertyGrid.SelectedObjects)
{
if (obj is Control ctrl)
ctrl.Refresh();
}
};
提示:使用
[Category]、[Description]、[Browsable(false)]、[ReadOnly(true)] 等特性可以精细控制属性在网格中的显示方式。
对应示例项目
📁 Source/Krypton Toolkit Examples/KryptonPropertyGrid Examples/
包含:基本属性展示、自定义对象、对象检查器、多对象编辑演示。