2014-01-28 24 views
1

我有以下代碼從Url讀取圖像並將圖像添加到ImageList。當添加到ImageList中Image.Tag爲空時在C#中

WebClient oWebClient = new WebClient(); 
Uri oUri = new Uri("http://www.mysite.com/images/image1.jpg"); 

try 
{ 
    Image oImage = Image.FromStream(oWebClient.OpenRead(oUri)); 
    oImage.Tag = "hello World"; 
    imageList1.Images.Add("test", oImage); 
} 
catch(Exception ex) 
{ 
    listBox1.Items.Add("Error getting photo: " + ex.Message); 
} 

一切工作正常,除了由於某種原因,當我檢查ImageList1對象中的圖像標籤是空的嗎?這是爲什麼發生?

+1

你確定你正在檢查'Image.Tag'而不是'ImageList.Tag'嗎? –

+0

是的,我正在查看Image.Tag,我ImageList中的唯一圖像。 – Tommassiov

回答

1

我會避開在對象上使用Tag屬性,因爲它可能不可靠(如您所見)以及不可擴展性。

您的情況ImageList.Add(key, image)使用key參數,因此您可以使用ImageList[key]索引器屬性檢索那個Image

如果您試圖將更多數據存儲到Tag屬性中,我會建議您改爲創建自己的數據模型類並使用它。

保持您的類型的List<T>Dictionary<Key, Value>用於檢索而不是使用Tag轉換/查找進行播放要容易得多。

+0

即使試圖添加imageList1.Images.Add(oImage),標籤爲空。我使用標籤的原因是,理想情況下,我想在Image中傳遞一個對象,傳遞給ImageList並將其添加到ImageList中。 – Tommassiov

+0

無論你傳遞給Images.Add(key,oImage)哪一個'key',你都應該使用同一個'key'來存儲你的對象到一個單獨的'Dictionary ',這樣你就可以將'key-> object'映射到圖像。我建議你一起避免使用「標籤」屬性。 – Erik

+2

我剛剛在msdn上遇到了一個論壇帖子,聲稱「你不能使用Image.Tag屬性,因爲將圖像添加到ImageList後,此屬性將被剝離出來。」 – Tommassiov

相關問題