0

所以我有一个 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 不是,并且失败并出现关于无法在给定文化中找到资源的错误&我是否确保资源被嵌入(它是)。

4

1 回答 1

0

将文件添加到项目的资源中。在名为 extraClass 的类中创建名为 myForm 的类的实例。

于 2012-12-06T19:18:35.407 回答