のプロパティをソートする場合PropertyGridのは、それが複数選択されたオブジェクトのプロパティをソートするとき.NET Forms
PropertyGrid
がDisplayNameAttribute
を尊重作るための方法がありますDisplayNameAttributeを無視するフォーム。 1つのオブジェクトがDisplayNameAttribute
に基づいてPropertyGrid
のソートを選択すると、複数のオブジェクトが選択されているときは、実際のプロパティ名を使用してソートされます。.NETは、複数の選択されたオブジェクト
次のコードは、問題を示しています
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;
}
}
以前のコードでは、 PropertyGrids
とForm
になります。左グリッドには選択範囲内に単一のオブジェクトが含まれ、右グリッドには選択範囲内に2つのオブジェクトが含まれます。
すべてのオブジェクトは、同じタイプのものです。左グリッドは、に基づいてproperties
に基づいており、実際のプロパティ名に基づいて右側にソートされています。 はをソートするとき
私は力PropertyGrid
は常にDisplayNameAttribute
を使用することができます:プロパティがグリッドに名前としてどちらの場合もDisplayNameAttribute
が提示されますか?
うわー、Microsoftが.....アルファベット順のソートを表示するポイントは何に基づいて発生します並べ替え、
DisplayNameEnforcingConverter
でMyObject
クラス属性場合...表示された名前をソートしていない場合は? これを行う方法があるはずです。 – 00jt