向窗体设计器c#WinForms添加资源

向窗体设计器c#WinForms添加资源,c#,winforms,resources,C#,Winforms,Resources,我的初始化组件方法: ResourceManager rm=Resources.ResourceManager; ... this.tsbAdd.Image=(位图)rm.GetObject(“添加”); 程序作为一个整体工作完美无瑕,但我现在无法打开designer。这很奇怪,因为我很确定它以前是有效的。不管怎样,这就是我现在遇到的错误: The variable 'rm' is either undeclared or was never assigned. 这是错误的,因为它是明确声

我的
初始化组件
方法:

ResourceManager rm=Resources.ResourceManager;
...
this.tsbAdd.Image=(位图)rm.GetObject(“添加”);
程序作为一个整体工作完美无瑕,但我现在无法打开designer。这很奇怪,因为我很确定它以前是有效的。不管怎样,这就是我现在遇到的错误:

The variable 'rm' is either undeclared or was never assigned. 
这是错误的,因为它是明确声明的,并且已经被多次使用。
每次我想打开designer时,我都可以对它进行注释,但这很烦人,因为编译器会在该方法中快速删除注释

一个可能的快速修复方法是清洁然后重建解决方案

在Visual Studio中的
Build
选项卡下,或右键单击解决方案浏览器中显示的解决方案

  • 清洁溶液
  • 重建解决方案
  • 重新启动Visual Studio

  • 如果这不起作用,请确保将调用
    InitializeComponent
    作为类构造函数中的第一行。

    对堆栈跟踪的检查显示,Visual Studio Designer在设计模式下显示表单时逐行解析此Designer.cs文件,而不是执行它

    这将解决您的问题,但正如您所知,您不应该在设计器中放置任何内容,并且只要您在设计模式下对窗体进行了最轻微的更改,或者使用编辑器更改窗体上任何控件的任何属性,您的这一行就会消失

    //ResourceManager rm = Resources.ResourceManager;
    //...
    this.tsbAdd.Image = (Bitmap)Resources.ResourceManager.GetObject("add");  
    
    在表单的构造函数中添加相同的代码也会起作用

    我建议在InitializeComponent()调用之后,将代码移动到表单构造函数中


    您使用的是什么版本的Visual Studio?你的组件是用x64编译的吗?我大概一个月没更新了。而且不确定它是用x64编译的。应该是的,我应该使用VS x64。这个代码是form.designer.cs吗?@OguzOzgul是的。没有任何更改
    InitializeComponent
    是第一个。好的,这一个有效。老实说,我更喜欢将表单设置保存在Designer.cs中,但因为它不允许我使用表单设置,所以我不得不使用它。感谢您的帮助。如果您使用编辑器和属性窗口设置控件的图像,您实际上可以。然后,它将被放入designer.cs中,并且不会被删除。我以为你因为某种原因不能这么做。这只是一个解决办法。
    ResourceManager rm = Resources.ResourceManager;
    
    public Form1()
    {
        InitializeComponent();
        this.tsbAdd.Image = (Bitmap)rm.GetObject("add");
    }