2010-11-11 29 views

回答

0

Enum is an explicit listing of all possible values of a set。只要有一組值可供選擇,就可以使用枚舉。另一種使用枚舉的另一種方法是設置flags

對於你的問題,我相信枚舉可能不是最好的方法,因爲我的文件名可能包含不允許在c#代碼中使用的字符。雖然您可以使用Enum descriptions hack來執行此操作。通過將this關鍵字添加到參數中,只需使GetDescription方法成爲extension method即可。

2

我假定你的意思是枚舉而不是列舉者。枚舉用於指定可能的符號值或含義的離散集合。你確定這是你想要的嗎?請注意,枚舉在編譯時烘焙完畢,之後不能更改,因此如果您的圖像集在運行時會發生更改,則需要其他一些數據結構。

另請注意,枚舉不能包含除成員名稱之外的任何信息,例如,您將無法將文件名與它們關聯。要做到這一點,你需要一個類似Dictionary或某事,例如:

enum Image 
{ 
    Image1, 
    Image2, 
    Image3 
} 

的一些方法:

var imageFileNames = new Dictionary<Image, string>(); 
imageFileNames[Image.Image1] = "/path/to/file1.jpg"; 
imageFileNames[Image.Image2] = "/path/to/file2.jpg"; 
imageFileNames[Image.Image3] = "/path/to/file3.jpg"; 
0

我強烈建議你存儲圖像要能夠選擇來自您的C#項目的資源文件。 (有關如何執行此操作,請參見my answer here)。

然後,您需要在代碼中創建一個枚舉(它只是一個定義集合中所有可能值的列表)。我建議在您的項目中創建一個新的空文件來保存枚舉並將其命名爲enum,以便您能夠輕鬆地再次找到它。你枚舉文件將是這個樣子(只要你想,你可以添加任意多的值):

public enum PartyImage 
{ 
    None = 0, 
    SmileyFace = 1, 
    Flower = 2, 
    Balloon = 3 
} 

然後,無論你要指定的圖像顯示,可以參考枚舉值之一。在將要處理的顯示圖像的代碼,你將不得不使用一個switch語句,將翻譯您指定要存儲在您的項目資源圖像文件枚舉值:

private void FlowerButtonClick() 
{ 
    //When this button is clicked, change the displayed image to a flower picture 
    UpdateDisplayedImage(PartyImage.Flower); 
} 

//etc. 

public void UpdateDisplayedImage(PartyImage image) 
{ 
    //Determine the image that was specified in the parameter, 
    //and update my picture box accordingly 
    switch (PartyImage) 
    { 
     case None: 
      myPicBox.Image = null; 
      break; 
     case Smileyface: 
      myPicBox.Image = MyWindowsApp.Properties.Resources.SmileyFace; 
      break; 
     case Flower: 
      myPicBox.Image = MyWindowsApp.Properties.Resources.Flower; 
      break; 
     case Balloon: 
      myPicBox.Image = MyWindowsApp.Properties.Resources.Balloon; 
      break; 
    } 
} 

在上面的示例中,FlowerButtonClick方法只是簡單地指定要顯示PartyImage enum中名爲Flower的圖像。它包含的代碼相當於調用MessageBox.Show函數並指定要在消息框中顯示的圖像。您可以根據需要使用這些方法中的任意一種,並且它們可以位於代碼中的任何位置,就像您可以從任何地方顯示帶有指定圖標的消息框一樣。

UpdateDisplayedImage方法執行從項目的Resources文件中檢索與您指定並顯示它的枚舉值相對應的圖像的實際工作。這相當於內部MessageBox.Show函數完成的工作,當它創建並顯示帶有指定圖標的新消息框時。


推薦閱讀有關枚舉的更多信息:

  1. Enumeration Design (MSDN)

  2. Enums in C# (MSDN)