我正在尝试在MessageBox
Image枚举上编写自己的抽象,并看到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?
解决方法
历史上,有不同的图标最终被合并为单个实际图标图像.因此,有几个枚举类型值(例如Hand和Stop)在现代Windows操作系统中只是意味着相同的东西.它们之间没有区别,它们只是别名.
如果你想有新的值来表示差异,那么你可以使用一个辅助变量(例如“isError”)来传达你想要在Stop和Hand之间应用的差异.或者你可以将Icon值复制到一个int并设置一个高在值中指示此额外信息,以便它可以在单个变量中“携带”.或者您可以使用与MessageBoxIcon“无关”的自己的枚举,并具有从您的值转换为MessageBoxIcon值的方法.
我建议拥有自己的“状态”值,然后根据需要将其转换为Icon值 – 两者传达的信息完全不同,因此尝试重载(损坏)MessageBox值以传达额外信息将不会很好方法.