【问题标题】:Sorting an image list loaded from resources by name按名称对从资源加载的图像列表进行排序
【发布时间】:2014-12-04 15:37:28
【问题描述】:

假设您有一个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 最大,cactus 最小)。

非常感谢您的帮助。

【问题讨论】:

  • 您可以使用已排序的字典为您进行排序。只需将所有文件添加到其中,并将名称作为键。然后执行 foreach 并循环遍历以按字母顺序检索所有内容。
  • 您是否查看过每个项目的Tag 属性值并确认它们的名称正确无误?AppleBananaCactus
  • @deathismyfriend 我什至不知道它的存在,正如你所说,我将我的列表更改为排序字典,并且.. 它已排序!非常感谢。如果可以的话,我会将您的评论标记为答案。 Dave Zych 是的,我做到了,标签设置正确。
  • @stella。我做了一个回答。如果您想接受它,我们将不胜感激。很高兴我能帮上忙。

标签: c# sorting visual-studio-2013


【解决方案1】:

您可以将所有图像添加到以图像名称为键的排序字典中。 然后,您在字典上执行 foreach 以按名称按字母顺序检索图像。

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多