複数の選択されたオブジェクトのプロパティを並べ替えるときに.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;
}
}
前のコードはForm
with two PropertyGrids
を作成します。左側のグリッドには 1 つのオブジェクトが選択されており、右側のグリッドには 2 つのオブジェクトが選択されています。
すべてのオブジェクトは同じタイプです。左のグリッドは にproperties
基づいて並べ替え、DisplayNameAttribute
右のグリッドは実際のプロパティ名に基づいて並べ替えます。どちらの場合もDisplayNameAttribute
、グリッドにプロパティ名として表示されます。
並べ替え時に常に を使用するように強制できますか?PropertyGrid
DisplayNameAttribute