2010-05-17 46 views
4

我试图写我自己在MessageBoxImage枚举抽象,并看到MessageBoxImage被定义为:为什么System.Windows.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, 
     } 
    } 

如何Show方法来确定是否显示错误图像或手图像? 如何编写一个需要MessageBoxImage类型的方法,并返回一个映射到MessageBoxImage类型的CustomMessageBoxImage类型,因为我不能在同一个switch语句中同时包含MessageBoxImage.Error和MessageBoxImage.Hand?

+0

你并不需要包括他们两人在同一个switch语句,因为它们都具有相同的价值。这意味着就计算机而言它们是等同的。 – 2011-06-29 11:26:01

回答

4

历史上有不同的图标,最终被合并成一个实际的图标图像。因此,有几个枚举类型值(例如Hand和Stop),它们在现代Windows操作系统中仅表示相同的东西。他们之间没有区别,他们只是别名。

如果你想有新的值来表示差异,那么你可以使用一个辅助变量(例如“isError)来传达你想在Stop和Hand之间应用的差异,或者你可以将Icon的值复制到一个int并在该值中设置一个高位来表示这些额外的信息,以便它可以在单个变量中“携带”,或者您可以使用与MessageBoxIcon“无关”的自己的枚举,并具有将值从MessageBoxIcon值

我建议拥有自己的“状态”值,然后根据需要将其转换为图标值 - 两者传达的信息完全不同,因此尝试重载(损坏)要传递的MessageBox值额外的信息不会是一个很好的解决方案ACH。

+0

谢谢杰森,我会采取这种方法 – devdigital 2010-05-17 08:36:24

相关问题