将资源添加到表单中断设计器,c# WinForms

Adding resource to form breaks designer, c# WinForms

我的InitializeComponent方法:

ResourceManager rm = Resources.ResourceManager;
...
this.tsbAdd.Image = (Bitmap)rm.GetObject("add");

整个程序运行完美,但我现在无法打开设计器。这很奇怪,因为我很确定它以前有效。无论哪种方式,这是我现在得到的错误:

The variable 'rm' is either undeclared or was never assigned. 

这是假的,因为它被明确声明,并且被多次使用。 每次我想打开设计器时,我都可以对其进行评论,但这很烦人,因为编译器会在该方法中快速删除评论。

一种可能的快速修复方法是清理然后重建您的解决方案。

在 Visual Studios 的 Build 选项卡下或右键单击解决方案资源管理器中显示的解决方案

  1. 清洁溶液
  2. 重建解决方案
  3. 重新启动 Visual Studios

如果这不起作用,请确保将对 InitializeComponent 的调用作为 class.

构造函数的第一行

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

这将解决您的问题,但如您所知,您不应该在设计器中添加任何内容,并且只要您在设计模式下对表单进行最细微的更改或更改您的任何控件的任何属性使用编辑器表单,你这行就没了

//ResourceManager rm = Resources.ResourceManager;
//...
this.tsbAdd.Image = (Bitmap)Resources.ResourceManager.GetObject("add");  

在表单的构造函数中添加相同的代码也可以,

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

ResourceManager rm = Resources.ResourceManager;

public Form1()
{
    InitializeComponent();
    this.tsbAdd.Image = (Bitmap)rm.GetObject("add");
}