Почему делает Систему. Windows. MessageBoxImage имеют подэлементы перечисления с тем же значением?

Я пытаюсь записать свою собственную абстракцию по перечислению MessageBoxImage и видеть, что MessageBoxImage определяется как:

namespace System.Windows
  {
      public enum MessageBoxImage
      {
          None = 0,
          Error = 16,
          Hand = 16,
          Stop = 16,
          Question = 32,
          Exclamation = 48,
          Warning = 48,
          Asterisk = 64,
          Information = 64,
      }
  }

Как Выставочный метод определяет, отобразить ли Ошибочное изображение или Ручное изображение? Как я записал бы метод, который берет тип MessageBoxImage, и возвратите тип CustomMessageBoxImage, который отображается на тип MessageBoxImage, поскольку я не могу включать оба MessageBoxImage. Ошибка и MessageBoxImage. Вручить тот же оператор переключения?

5
задан skaffman 17 May 2010 в 07:39
поделиться

1 ответ

Исторически существовали разные значки, которые в конечном итоге объединялись в одно реальное изображение значка. Итак, есть несколько значений перечислимого типа (например, Hand и Stop), которые просто означают одно и то же в современных ОС Windows. Между ними нет никакой разницы, это просто псевдонимы.

Если вы хотите иметь новые значения для представления различий, вы можете использовать вторичную переменную (например, isError), чтобы передать разницу, которую вы хотите применить между Stop и Hand. Или вы можете скопировать значение Icon в int и установите высокий бит в значении, чтобы указать эту дополнительную информацию, чтобы ее можно было «переносить» в одной переменной. Или вы можете использовать свое собственное перечисление, которое «не связано» с MessageBoxIcon, и иметь методы, которые преобразуют ваше значение в Значение MessageBoxIcon.

Я бы посоветовал иметь собственное значение «Статус», а затем преобразовывать его в значение значка по мере необходимости - они передают совершенно разную информацию, поэтому пытается перегрузить (повредить) значение MessageBox, чтобы передать дополнительную информацию было бы не очень хорошим подходом.

5
ответ дан 15 December 2019 в 00:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: