所以我有一个Windows窗体dll。有一个MainForm类,它创建一个ComponentResourceManager并访问存储在resx中的图像资源。如果我直接实例化该类,一切都很快乐。
如果我将一个新类添加到同一个命名空间(我只是将其添加到与实际的MainForm类相同的.cs文件中)并尝试访问这些图像资源,就像我得到关于该资源不存在的错误一样对于给定的文化。检查当前的线程文化(和UI文化),两者都是相同的。
是否需要一些额外的箍来跳过才能从另一个类中访问表单的资源?
示例代码
namespace myNamespace
{
public class extraClass
{
public extraClass()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(myForm));
System.Drawing.Image img = ((System.Drawing.Image)(resources.GetObject("StatusButton.Image")));
MessageBox.Show(img.ToString());
}
}
public class myForm : Form
{
public myForm()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(myForm));
System.Drawing.Image img = ((System.Drawing.Image)(resources.GetObject("StatusButton.Image")));
MessageBox.Show(img.ToString());
InitializeComponent();
}
}
}
在这个示例中,实例化myForm会很高兴但是extraClass不会因为无法在给定的文化和资源中找不到资源而失败。我确保资源是嵌入的(它是)。
答案 0 :(得分:0)
将文件添加到项目的资源中。在名为extraClass的类中创建名为myForm的类的实例。