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

问题描述 投票:0回答:2

我的InitializeComponent方法:

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

程序作为一个整体可以完美地工作,但是我现在不能打开设计师。这很奇怪,因为我很确定它以前能工作。无论哪种方式,这都是我现在得到的错误:

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

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

c# winforms resources
2个回答
0
投票

检查堆栈跟踪是否有错误,表明Visual Studio Designer在设计模式下显示表单时,会解析此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");
}

1
投票

一个可能的快速解决方法是先清洁然后重新构建解决方案。

在Visual Studios的Build标签下,或右键单击解决方案资源管理器中显示的解决方案

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

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

© www.soinside.com 2019 - 2024. All rights reserved.