Как @Marc Gravel сказал в своем ответе , в рамках нет ничего, что позволяло бы такое поведение. Любое решение будет взломать. С учетом вышесказанного вы можете использовать решение, предложенное @Shahab в его ответе , в качестве обходного пути, но оно на самом деле не указывает на ваше намерение кого-либо поддерживать ваш код. Поэтому я думаю, что лучшее, что вы можете сделать, - это создать пользовательский Attribute
, который наследуется от CategoryAttribute
, чтобы обработать процесс для вас:
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
, чтобы исключить непечатаемые для вас символы, а для PropertySort
установлено значение Categorized
или CategorizedAlphabetical
, и вы хорошо идти.