C# 以另一个类的形式从resx访问资源

C# 以另一个类的形式从resx访问资源,c#,winforms,embedded-resource,resx,C#,Winforms,Embedded Resource,Resx,所以我有一个windows窗体dll。有一个MainForm类,用于创建ComponentResourceManager并访问存储在该表单的resx中的图像资源。如果我直接实例化这个类,一切都会很好 如果我将一个新类添加到同一名称空间(我只是将它添加到与MainForm类实际上相同的.cs文件中),并且我尝试以相同的方式访问这些图像资源,那么我会得到一个关于给定区域性不存在的资源的错误。检查当前线程区域性(和UI区域性)两者都相同 是否有一些额外的环我需要跳转通过从另一个类访问表单的资源 示例代

所以我有一个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不会,并且失败了,因为在给定的区域性中找不到资源&我是否确保资源是嵌入的(它是嵌入的)。

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

Crazier and Crazier。因此,我很懒惰,将我的新类extraClass添加到与myForm相同的cs文件中。事实证明,存在外部类,即使我将其拆分为具有空构造函数的空类,也会导致主myForm在无法定位资源的情况下出现相同的错误。我将尝试将类外文件移动到其他文件中。可能是因为我使用的是Python中的dll,而Python clr桥做了一些疯狂的事情?对,所以将其作为项目级资源是可行的。但将资源保留在表单中应该是可行的。一般来说,我们不想把所有资源都变成项目级资源。特别是我想做一些奇怪的事情,实际上我在一个新的线程上从类外启动myForm,这是完全好的,除了资源访问的东西会引起问题。到目前为止,解决方法是重新排序类,这完全是古怪的,因为这根本不重要。