我想知道爲什麼和我們應該在哪裏使用枚舉數,我有一組圖像我想分配給每個數字,並把它放在一個枚舉,我想設置的數字,而不是 整個文件名時,我想設置的圖像,就像MessageBoxIcon枚舉在哪裏可以使用枚舉和如何模擬messageboxICon枚舉
感謝
我想知道爲什麼和我們應該在哪裏使用枚舉數,我有一組圖像我想分配給每個數字,並把它放在一個枚舉,我想設置的數字,而不是 整個文件名時,我想設置的圖像,就像MessageBoxIcon枚舉在哪裏可以使用枚舉和如何模擬messageboxICon枚舉
感謝
Enum is an explicit listing of all possible values of a set。只要有一組值可供選擇,就可以使用枚舉。另一種使用枚舉的另一種方法是設置flags
對於你的問題,我相信枚舉可能不是最好的方法,因爲我的文件名可能包含不允許在c#代碼中使用的字符。雖然您可以使用Enum descriptions hack來執行此操作。通過將this
關鍵字添加到參數中,只需使GetDescription方法成爲extension method即可。
我假定你的意思是枚舉而不是列舉者。枚舉用於指定可能的符號值或含義的離散集合。你確定這是你想要的嗎?請注意,枚舉在編譯時烘焙完畢,之後不能更改,因此如果您的圖像集在運行時會發生更改,則需要其他一些數據結構。
另請注意,枚舉不能包含除成員名稱之外的任何信息,例如,您將無法將文件名與它們關聯。要做到這一點,你需要一個類似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";
我強烈建議你存儲圖像要能夠選擇來自您的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
函數完成的工作,當它創建並顯示帶有指定圖標的新消息框時。
推薦閱讀有關枚舉的更多信息: