C# 在C中添加到ImageList时,Image.Tag为空#

C# 在C中添加到ImageList时,Image.Tag为空#,c#,image,C#,Image,我有下面的代码,它从Url读取图像并将图像添加到ImageList 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"; imageL

我有下面的代码,它从Url读取图像并将图像添加到ImageList

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对象中检查图像标记时图像标记为空之外?为什么会发生这种情况?

我会避免在对象上使用
标记
属性,因为它可能不可靠(如您所见),而且扩展性不强

在您的情况下,
ImageList.Add(key,image)
使用
key
参数,以便以后可以使用
ImageList[key]
索引器属性检索该
image

如果您试图将更多数据存储到
标记
属性中,我建议您创建自己的数据模型类并使用它


保存一个你所属类型的
列表
字典
以供检索,而不是玩
标记
投射/查找,要容易得多。

你确定你在检查
图像.Tag而不是
图像列表.Tag
?是的,我在查看图像.Tag,对于ImageList中唯一的图像。即使尝试添加imageList1.Images.add(oImage),标记也为空。我使用标记的原因是,理想情况下,我希望在图像中传递一个对象,该对象被传递到并添加到ImageList。无论传递到哪个
key
图像。Add(key,oImage)
,您应该使用相同的
将对象存储到单独的
字典
,以便可以映射图像的
键->对象
。我建议您避免使用
标签
属性。我刚刚在msdn上看到一篇论坛帖子,上面说“您不能使用Image.Tag属性,因为将图像添加到ImageList后,此属性将被剥离。”