0

次のコードを使用して、ある winform から別の winform に画像オブジェクトを渡そうとしています。

私の最初のwinformでは、クラスの一番上にこれがあります:

 public Image SavedImage
 {
    get { return PictureBox.Image; }
    set { PictureBox.Image = value; }
 }

そして、最初の winform のイニシャライザには、次のコードがあります。

 public ControlPanel(Image savedImage)
 {
    InitializeComponent();
    _screenCapture = new ScreenCapture();
    _screenCapture.OnUpdateStatus += _screen_CapOnUpdateStatus;
    SavedImage= savedImage;
 }

次に、2 番目の winform で、そのイメージ オブジェクトを最初の winform に次のように渡します。

 this.InstanceRef.SavedImage = savedImageObject;
 this.InstanceRef.Show();
 this.Close();

ただし、このコードを実行すると、次のエラーが発生します。

'System.Windows.Forms.Form' には 'SavedImage' の定義が含まれておらず、タイプ 'System.Windows.Forms.Form' の最初の引数を受け入れる拡張メソッド 'SavedImage' が見つかりませんでした (using ディレクティブがありませんか?またはアセンブリ参照?)

私が知る限り、これは正しいコードです。しかし、私のコンパイラはそうではないと言っています。このコードを克服するにはどうすればよいですか?

InstanceRef は、次のコードに関連しています。

  private Form m_InstanceRef = null;
  public Form InstanceRef
   {
      get { return m_InstanceRef; }
      set { m_InstanceRef = value; }
   }
4

1 に答える 1

3

フォーム クラスに名前を付け、YourFormClass実際SavedImageに で定義されているとしますYourFormClass

((YourFormClass)this.InstanceRef).SavedImage = savedImageObject;

InstanceRefまたは、次のようにプロパティを再定義できます。

private YourFormClass m_InstanceRef = null;
public YourFormClass InstanceRef {
  get { return m_InstanceRef; }
  set { m_InstanceRef = value; }
} 
//Then you don't need to cast InstanceRef to YourFormClass
于 2013-08-30T16:20:37.860 に答える