从另一个类的表单中访问resx中的资源

时间:2012-12-06 18:17:42

标签: c# winforms embedded-resource resx

所以我有一个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不会因为无法在给定的文化和资源中找不到资源而失败。我确保资源是嵌入的(它是)。

1 个答案:

答案 0 :(得分:0)

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