PropertyGrid でのカテゴリの並べ替えをカスタマイズするにはどうすればよいですか?
-
05-07-2019 - |
質問
カテゴリの並べ替えをカスタマイズするにはどうすればよいですか? PropertyGrid
?
以下のいずれかを設定すると…
propertyGrid.PropertySort = PropertySort.Categorized;
propertyGrid.PropertySort = PropertySort.CategorizedAlphabetical;
...カテゴリはアルファベット順に並べられます。(「アルファベット順」は各カテゴリ内のプロパティに適用されるようです。) PropertySort.NoSort
, カテゴライズを失います。
私は自分のデータを入力しています PropertyGrid
と SelectObject
, これは非常に簡単です。
this.propertyGrid1.SelectedObject = options;
options
は、適切に装飾されたプロパティを持つクラスのインスタンスです。
[CategoryAttribute("Category Title"),
DisplayName("Property Name"),
Browsable(true),
ReadOnly(false),
BindableAttribute(true),
DesignOnly(false),
DescriptionAttribute("...")]
public bool PropertyName {
get {
// ...
}
set {
// ...
this.OnPropertyChanged("PropertyName");
}
}
6 つのカテゴリーに数十の物件があります。
使いやすさを維持しながらカテゴリの並べ替え順序を調整する方法はありますか? SelectedObject
?
解決
カテゴリを特定の(アルファベット順ではない)方法でソートしたい場合は、いいえ-それができるとは思いません。 VisualHint を試してみたいと思うかもしれません。より多くのコントロールをつかむ)。
他のヒント
このリンクは役に立つと思いますhttp://bytes.com/groups/net-c/214456-q-ordering-sorting-category-text-propertygrid
これを行う方法はないと思います。歌詞の意味: 私ができる唯一のこと これができる可能性があることを示すのは、PropertySortです 財産。none に設定すると、プロパティが表示されます 型記述子から受信した順序で。あなたはそうかもしれません オブジェクトと propertygridは、正しい order ですが、カテゴリを持つプロパティは必要な順序で表示されます それらで...
@Marc Gravelが彼の答えで言ったように、この動作を許可するフレームワークには何もありません。すべてのソリューションはハックになります。そうは言っても、回避策として彼の回答で@Shahabによって提案されたソリューションを使用できますが、それはしませんあなたのコードを保守している人にあなたの意図を本当に示してください。したがって、できることは、 CategoryAttribute
を継承してプロセスを処理するカスタム Attribute
を作成することだと思います:
public class CustomSortedCategoryAttribute : CategoryAttribute
{
private const char NonPrintableChar = '\t';
public CustomSortedCategoryAttribute( string category,
ushort categoryPos,
ushort totalCategories)
: base(category.PadLeft(category.Length + (totalCategories - categoryPos),
CustomSortedCategoryAttribute.NonPrintableChar))
{
}
}
このように使用できます
[CustomSortedCategory("Z Category",1,2)]
public string ZProperty {set;get;}
[CustomSortedCategory("A Category",2,2)]
public string AProperty {set;get;}
PropertyGrid
の UseCompatibletextRendering
プロパティを true
に設定して、印刷不可能な文字を削除し、< code> PropertySort を Categorized
または CategorizedAlphabetical
に設定すると、準備完了です。
上記の '\ t'トリックの小さなバリエーションで、代わりにキャリッジリターン文字( '\ r')で試しました。動作しているようで、タブによって生じる余分なスペースに起因するツールチップの問題を回避します。