动态获取资源对象

时间:2014-04-04 13:59:44

标签: c# winforms

我已将所有国家/地区标记添加到我的资源类中,所有国家/地区标记的名称均为:flag_TLD - flag_deflag_dk等等。

对于用户,我存储了他们所在国家/地区的TLD,我想在列表中动态显示所有国家/地区标记。

通常,在使用资源时,我使用:GUI.Properties.Resources.<resourcename>但现在我想在50-100个用户的循环中使用GUI.Properties.Resources.flag_<user.getCountry.TLD>(例如)。

foreach (var user in getUserList())
{
     something.Image = GUI.Properties.Resources.flag_<user.getCountry.TLD>
}

有办法吗?

1 个答案:

答案 0 :(得分:2)

您可以通过以下方式获取应用程序中所有资源的列表:

System.Reflection.Assembly thisExe; 
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
string [] resources = thisExe.GetManifestResourceNames();

现在你要做的只是循环resources并使用名称中包含flag_的元素。

来源: http://msdn.microsoft.com/en-us/library/aa287526(v=vs.71).aspx

修改 要根据字符串获取资源,请使用

 something.Image = GUI.Properties.Resources.ResourceManager.GetObject("flag_" + user.getCountry.TLD)