2017-03-10 11 views
0

私の場合、このエラーはどういう意味ですか?非静的なフィールド、メソッド、またはプロパティ 'System.Windows.Forms.Form.Close()'にオブジェクト参照が必要です

オブジェクト参照が非静的フィールド、メソッド、またはプロパティ「System.Windows.Forms.Form.Close()」のために必要とされる

PS:私は、エラーを取得しています

BackgroundWorker bg = new BackgroundWorker(); 
    bg.DoWork += new DoWorkEventHandler(bg_DoWork); 
    bg.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bg_RunWorkerCompleted); 
    bg.RunWorkerAsync(); 
    Form2 Form2 = new Form2(); 
    Form2.ShowDialog(); 
    private void bg_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
    { 
     object result = e.Result; 
     Form2.Close(); 
    } 
+0

クラスとオブジェクトに同じ名前がある特定の理由はありますか? 'Form2 Form2 = new Form2();'、 –

答えて

1

と同じ名前を持つべきではありません。 1つのメソッドでインスタンスを指定すると、スコープの外にあるので、他のメソッドでは使用できません。たとえば、Form2インスタンスを配置する必要があります。両方のメソッドが同じクラスにある場合、クラスのプライベートフィールドに格納されます。

+0

プライベートフィールドを定義するにはどうすればいいですか?あなたは私的な属性を意味しますか?いいえ? –

+0

プライベートForm2 _myFormのようなもの。 –

+0

私はそれを修正した、それは、ありがとう、ありがとう –

-1

変更変数名:私はForm2.Closeを呼び出す行()

は、ここに私のコードです。 変数名は、あなたがこの方法でのForm2のインスタンスを指定し、別の方法でそれを使用する名前のクラス(フォーム2)

Form2 _myForm = new Form2(); 
_myForm.Close(); 
+0

これは、メソッドbg_RunWorkerCompletedの範囲外ですので、助けになりません –

関連する問題