2009-03-25 2 views
0

У меня есть перечисление, и я хочу настроить заказ, который он отображает в раскрывающемся списке сетки свойств.Enum in PropertyGrid - Простой пользовательский порядок сортировки

public enum Dir : int 
{ 
    None = 0, 
    North = (1 << 1), 
    South = (1 << 2), 
    East = (1 << 3), 
    West = (1 << 4), 
    NorthWest = North | West, 
    NorthEast = North | East, 
    SouthWest = South | West, 
    SouthEast = South | East 
} 

Я хочу раскрывающийся появляться в том же порядке, как я объявил перечисление, но вместо этого он сортирует в числовом порядке.

Я знаю, что это возможно сделать с преобразователем типа, но можно ли это сделать без?

ответ

2

Установлены ли эти значения? Я предполагаю, что вы используете псевдо-флагов, как enum, чтобы вы могли узнать, является ли значение «на всем северном». Если это так (и это немного странно - это означает, что вы можете иметь South | North, но неважно) было бы важно, если вы установите дополнительный бит?

public enum Dir : int 
{ 
    None = 0, 
    North = (1 << 1), 
    South = (1 << 2), 
    East = (1 << 3), 
    West = (1 << 4), 
    NorthWest = (1 << 5) | North | West, 
    NorthEast = (1 << 6) | North | East, 
    SouthWest = (1 << 6) | South | West, 
    SouthEast = (1 << 7) | South | East 
} 

Это будет хранить его в цифровом порядке. (Было бы проще и последовательнее, если бы вы могли сделать Запад до Востока или NorthEast до NorthWest и т. Д. Тогда вы можете просто использовать (1 << 5) в качестве дополнительного бита для всех них.

Смежные вопросы