按名称排序从资源加载的图像列表

时间:2014-10-09 16:02:02

标签: c# sorting visual-studio-2013

假设您有一个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);
        }
    }

这是我每次都得到的结果, http://puu.sh/c5BTz/41f828cf1b.jpg

我不知道是否需要考虑文件大小,但在这种情况下,图像的文件大小也是有序的。 (Apple.png是最大的,仙人掌是最小的)。

非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

您可以将所有图像添加到已排序的字典中,并将图像名称作为键。 然后你在字典上做一个foreach,按名称按字母顺序检索图像。