假设您有一个List<Image>
,您可以使用以下内容添加解决方案资源中找到的所有图像;
using (ResourceSet resourceSet = SomeProject.Properties.Resources.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true))
{
foreach (DictionaryEntry entry in resourceSet)
{
SomeList.Add((Image)entry.Value);
}
}
在这种情况下,我们的资源中会有三张图片。 Apple.png Banana.png, Cactus.png
如何按字母顺序对此列表进行排序,以便按正确的顺序循环显示此列表,获取Apple -> Banana -> Cactus
?
我已阅读How to sort ResourceSet in C#我试图应用于我的情况,但无济于事。
我自己尝试将entry.Key
分配给图片标记,然后执行someList.OrderBy(f => f.Tag).ToList();
这是我用来测试这个
的完整代码 List<Image> someList = new List<Image>();
private void button1_Click(object sender, EventArgs e)
{
using (ResourceSet resourceSet = WindowsFormsApplication52.Properties.Resources.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true))
{
foreach (DictionaryEntry entry in resourceSet)
{
Image i = (Image)entry.Value;
i.Tag = entry.Key;
someList.Add((Image)i);
}
someList.OrderBy(f => f.Tag).ToList();
}
foreach(var x in someList)
{
PictureBox pb = new PictureBox();
pb.Image = x;
pb.Size = new System.Drawing.Size(200, 200);
pb.SizeMode = PictureBoxSizeMode.Zoom;
flowLayoutPanel1.Controls.Add(pb);
}
}
这是我每次都得到的结果,
我不知道是否需要考虑文件大小,但在这种情况下,图像的文件大小也是有序的。 (Apple.png是最大的,仙人掌是最小的)。
非常感谢帮助。
答案 0 :(得分:1)
您可以将所有图像添加到已排序的字典中,并将图像名称作为键。 然后你在字典上做一个foreach,按名称按字母顺序检索图像。