0

だから私はWindowsフォームDLLを持っています。ComponentResourceManager を作成し、そのフォームの resx に保存されている画像リソースにアクセスする MainForm クラスがあります。そのクラスを直接インスタンス化すると、すべてがうまくいきます。

新しいクラスを同じ名前空間に追加し (実際には 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 に答える