2010-05-17 45 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

相關問題