获取PropertyGridControl 控件中所有变更过的属性以及值
时间: 2024-02-21 11:00:23 浏览: 5
您可以使用以下代码获取 PropertyGridControl 控件中所有变更过的属性以及值:
```
List<PropertyItem> changedProperties = new List<PropertyItem>();
foreach (PropertyItem property in propertyGridControl1.Properties)
{
if (property.IsModified)
{
changedProperties.Add(property);
}
}
```
上述代码中,`propertyGridControl1` 是您的 PropertyGridControl 控件的实例名。代码通过遍历 `Properties` 集合来获取所有属性,然后检查每个属性的 `IsModified` 属性值以确定是否已经修改。如果属性已经修改,将其添加到 `changedProperties` 集合中。最终,`changedProperties` 将包含所有变更过的属性以及它们的值。
相关问题
获取DEV表格控件中所有变更过的属性值
在 C# 中,可以通过 DEV 表格控件的 `GetChanges()` 方法获取所有变更过的行和它们的属性值。这个方法返回一个 `DataTable` 对象,其中包含了所有变更过的行和它们的属性值。
以下是一个示例代码,演示如何使用 `GetChanges()` 方法获取 DEV 表格控件中所有变更过的属性值:
```csharp
// 假设 DEV 表格控件的名称为 dataGridView1
DataTable changes = ((DataTable)dataGridView1.DataSource).GetChanges();
if (changes != null)
{
foreach (DataRow row in changes.Rows)
{
Console.WriteLine("变更过的行:{0}", row.RowState);
foreach (DataColumn col in changes.Columns)
{
Console.WriteLine("{0}: {1}", col.ColumnName, row[col]);
}
}
}
else
{
Console.WriteLine("没有变更过的属性值。");
}
```
在这个示例中,我们首先使用 `GetChanges()` 方法获取所有变更过的行和它们的属性值,并将结果赋值给一个 `DataTable` 对象。然后,我们检查结果是否为 null,如果不是,就遍历所有变更过的行,并输出它们的属性值。
请注意,由于变更过的行可能包括新增、修改和删除操作,因此您需要检查每个行的 `RowState` 属性,以确定行的操作类型。
但是我要取到这个控件所有变更过的属性,而不是单独某一个类型的值
如果您想要获取控件所有变更过的属性和对应的值,可以使用以下代码:
```csharp
var gridView = new GridView();
var props = TypeDescriptor.GetProperties(gridView);
var changedProps = new Dictionary<string, object>();
foreach (PropertyDescriptor prop in props)
{
var propName = prop.Name;
var propValue = prop.GetValue(gridView);
var defaultValue = prop.DefaultValue;
if (!propValue.Equals(defaultValue))
{
changedProps.Add(propName, propValue);
}
}
```
这段代码将遍历GridView的所有属性,将属性名和属性值保存在一个字典中,并且只保存值发生变更的属性。您可以在GridView的一些事件中调用这段代码,比如CellValueChanged事件、RowUpdated事件等。这样就可以获取GridView中所有变更过的属性和对应的值了。