我有一个下拉组合框,可以更改图片框的图像。这些图像存储在一个resx文件中,其中包含一个对它们进行计数的数组,因此如果我决定添加更多,我只需要更新组合框,并将图像添加到resx文件中。我遇到的问题是,当我使用组合框更新图像时,resx中的图像不是按字母顺序排列,但它们确实会更改图片框上的图像。
这是我的代码
ResourceSet cardResourceSet = Properties.Resources.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true);
attributes = new Image[cardCount];
cardCount = 0;
foreach (DictionaryEntry entry in cardResourceSet)
{
string resourceKey = (string)entry.Key;
object resource = entry.Value;
cardCount++;
}
attributes = new Image[cardCount];
cardCount = 0;
foreach (DictionaryEntry entry in cardResourceSet)
{
attributes[cardCount] = (Image)entry.Value;
cardCount++;
}
if (attributeBox.SelectedIndex != -1)
{
this.cardImage.Image = attributes[attributeBox.SelectedIndex];
}
如何按字母顺序对resx中的资源进行排序?
答案 0 :(得分:1)
返回类型GetResourceSet
,ResourceSet
,实现IEnumerable
,因此您应该可以在其上运行一些LINQ命令:
foreach (var entry in cardResourceSet.Cast<DictionaryEntry>().OrderBy(de => de.Key))
{
}
由于你要迭代两次(虽然我不确定第一个for循环的重点,除非还有其他代码),你可能想要将排序后的结果分配给一个单独的变量:
var sortedCardResourceSet.Cast<DictionaryEntry>().OrderBy(de => de.Key).ToList();
foreach (var entry in sortedCardResourceSet)
{
...
}
...