System.Windows.Forms.PropertyGrid 属性网格组件的使用代码示例
时间: 2024-09-23 14:06:39 浏览: 35
WinForm属性编辑 propertyGrid示例 仿window
5星 · 资源好评率100%
属性网格(System.Windows.Forms.PropertyGrid)是一个用于显示和编辑对象属性的控件。下面是一个简单的代码示例,展示如何创建一个PropertyGrid并绑定到一个自定义的对象:
```csharp
using System;
using System.Windows.Forms;
public class MyClass // 自定义一个类
{
public string Name { get; set; }
public int Age { get; set; }
}
public partial class Form1 : Form
{
private MyClass myObject;
public Form1()
{
InitializeComponent();
// 创建一个MyClass实例
myObject = new MyClass();
myObject.Name = "John";
myObject.Age = 30;
// 初始化PropertyGrid,添加需要展示的属性
propertyGrid1.SelectedObject = myObject;
propertyGrid1.Properties.Add("Name", myObject.GetType().GetProperty("Name"));
propertyGrid1.Properties.Add("Age", myObject.GetType().GetProperty("Age"));
// 当属性发生变化时,更新UI
propertyGrid1.PropertyValueChanged += PropertyGrid_PropertyValueChanged;
}
void PropertyGrid_PropertyValueChanged(object sender, PropertyValueChangedEventArgs e)
{
if (e(PropertyGrid1.SelectedObject).PropertyInfo.Name == "Name" || e(PropertyGrid1.SelectedObject).PropertyInfo.Name == "Age")
{
Console.WriteLine($"'{e.PropertyDescriptor.Name}' 的新值:{e.NewValue}");
}
}
// Form的加载事件
private void Form1_Load(object sender, EventArgs e)
{
// 展示Form
Show();
}
}
```
在这个例子中,我们首先创建了一个`MyClass`实例,并将其绑定到PropertyGrid的`SelectedObject`属性上。然后,我们通过`Properties.Add()`方法手动将类的属性添加到PropertyGrid中。当用户在属性网格修改了属性时,`PropertyValueChanged`事件会被触发,我们可以在此处理程序中获取新的属性值。
阅读全文