gpt4 book ai didi

.net - 为什么 System.Windows.MessageBoxImage 有相同值的枚举子项?

转载 作者:可可西里 更新时间:2023-11-01 13:41:48 25 4
gpt4 key购买 nike

我试图在 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,
}
}

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

最佳答案

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

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

我建议拥有自己的“Status”值,然后根据需要将其转换为 Icon 值 - 两者传达的信息完全不同,因此尝试重载(破坏)MessageBox 值以传达额外信息不会是一个很好的方法。

关于.net - 为什么 System.Windows.MessageBoxImage 有相同值的枚举子项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2847313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com