在Windows应用程序中以编程方式检索资源值

时间:2010-10-17 05:38:41

标签: c# .net

我想以编程方式从资源中获取特定值。例如,我有一个FileName变量,其中包含资源图像名称。

如何使用此变量获取该资源?

我尝试了这个但没有工作:(第3行后文件为空)

public Bitmap FindImgaeFromResource(string ImageFileName)
{
    Assembly thisExe;
    thisExe = Assembly.GetExecutingAssembly();
    Stream file = thisExe.GetManifestResourceStream(ImageFileName);
    return (Bitmap)Image.FromStream(file);
 }

这不是WPF应用程序,我不能使用this.tryfindresource()

3 个答案:

答案 0 :(得分:3)

我的猜测是您使用的名称不正确。如果使用ILDASM打开程序集,则可以找到资源的正确名称。

这是一篇关于从程序集资源加载图像的知识库文章。

http://support.microsoft.com/kb/324567

答案 1 :(得分:2)

最简单的方法是:

Use ResourceManager

我们应该像这样创建新对象:

ResourceManager rManger = new ResourceManager("ProjectName.Properties.Resources", typeof(Resources).Assembly);

然后使用此代码来检索对象或字符串:

(System.Drawing.Bitmap)rManger.GetObject("Resource-Name");

 rManger.GetString("Resource-Name");

答案 2 :(得分:1)

尝试修改这组语句。

string fileName ="AppNameSpace.FolderWithImage.logo.png";

Assembly assembly = Assembly.LoadFrom(Application.ExecutablePath);
Stream stream = assembly.GetManifestResourceStream();
Image bitmap = Image.FromStream(stream);

您也可以尝试直接引用该资源。这并不能完全帮助您解决问题中的情况,但是当您可以使用它时,它不容易出错。

byte[] imgBytes = Properties.Resources.MyImageFile;