有没有办法在对多个选定对象的属性进行排序时做出.NET Forms
PropertyGrid
尊重。DisplayNameAttribute
当单个对象被选择时,PropertyGrid
排序基于,DisplayNameAttribute
但是当多个对象被选择时,它使用实际的属性名称来排序。
以下代码演示了该问题:
static class Program
{
[STAThread]
static void Main()
{
Form myForm1 = new Form();
myForm1.Width = 820;
myForm1.Height = 340;
PropertyGrid grid1 = new PropertyGrid();
grid1.Left = 0;
grid1.Top = 0;
grid1.Width = 400;
grid1.Height = 300;
myForm1.Controls.Add(grid1);
grid1.SelectedObject = new MyObject();
PropertyGrid grid2 = new PropertyGrid();
grid2.Left = 400;
grid2.Top = 0;
grid2.Width = 400;
grid2.Height = 300;
myForm1.Controls.Add(grid2);
object[] objects = new object[] { new MyObject(), new MyObject() };
grid2.SelectedObjects = objects;
Application.Run(myForm1);
}
}
public class MyObject
{
[DisplayName("ZZZZ")]
public int AProperty
{
get;
set;
}
[DisplayName("BBBB")]
public int BProperty
{
get;
set;
}
}
前面的代码使 aForm
与两个 PropertyGrids
。左侧网格在其选择中包含单个对象,而右侧网格在其选择中包含两个对象。
所有对象都属于同一类型。左侧网格根据实际属性名称进行排序,而右侧网格properties
根据DisplayNameAttribute
实际属性名称进行排序。在这两种情况下,DisplayNameAttribute
都在网格中显示为属性名称:
我可以强制PropertyGrid
总是在排序DisplayNameAttribute
时使用吗?