none
添加图片文件到form的resx文件中并引用遇到的问题 RRS feed

  • 问题

  • 我的form叫做mainform, 用的vs2010。双击 mainform.resx,在管理界面中,添加资源〉添加现有文件,添加了一个3.bmp文件。

    然后我引用它,发现没有访问到。

    Image imageResource = (Image)Resources.ResourceManager.GetObject("3");

    或者 Image imageResource = (Image)Resources.ResourceManager.GetObject("3.bmp");

               Bitmap  bmpWatermarkFire = new Bitmap(imageResource);

    发现imageResource 都是null,

    并在Bitmap bmpWatermarkFire = new Bitmap(imageResource);抛出异常

    “System.NullReferenceException”类型的未经处理的异常出现在 System.Drawing.dll 中。

    其他信息: 未将对象引用设置到对象的实例。

    我已经在vs2010中把3.bmp设置为 始终复制 嵌入的资源,还是不行。

    请问如何解决。

    谢谢。

    2013年11月8日 5:01

答案

  • 不能直接传入图片名字,必须传入你mainform.resx文件所在的命名空间。

    参考我的博文:http://www.cnblogs.com/ServiceboyNew/archive/2012/02/29/2372979.html(使用Resources.resx文件)。

    方便起见,我重现此问题的解决方案:

    1)目前我的项目如下:

    2)Form1的命名空间是“CSharp”(如果你不确定,可以用任意的反编译工具查看Resources究竟是啥命名空间):

    3)代码:

     ResourceManager rm = new ResourceManager("CSharp.Form1", Assembly.GetExecutingAssembly());
               Image img = (Image) rm.GetObject("PuSa");
               this.BackgroundImage = img;

    For Account Validation, please follow "Verify Account+Number" at http://social.msdn.microsoft.com/Forums/en-us/home?forum=reportabug

    For ASP.NET Question, please ask at http://forums.asp.net

    For other questions, you can find a specific forum and then ask at http://stackexchange.com/sites

    Click and Donate at http://www.freerice.com

    2013年11月10日 4:08
    版主