• 締切済み

オブジェクト参照エラーについて

http://uchukamen.com/Programming1/WebBrowser/index.htm こちらのページのソースコードを基にして、C#2005でブラウザを作っています。 設定画面を作るためにForm2を呼び出そうとしていますが旨くいかず、検索を重ねても解決法がわかりません。 1. ソリューションエクスプローラから追加→新しい項目で、Windowsフォームを追加(Form2.csが新しくできる) 2. 「static void Main() {」の次に  「Browser.Form2 Form2 = new Browser.Form2();」を追加 3. Form1のツールバーに項目1を1つ追加 →クリックされたときに「Browser.Form2.ShowDialog();」 ビルドすると「Browser.Form2.ShowDialog();」に下線を引かれて "静的でないフィールド、メソッド、プロパティ'System.Windows.Forms.Form.ShowDialog()'でオブジェクト参照が必要です。" と帰ってきます。 ご教授いただけると大変幸いです。 ちなみに私のプログラミング知識についてはPerlでCGIを少し自作できる程度です。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

変数のスコープを復習しましょう インスタンス(実体)とクラス名の区別もしましょうね 関数内で宣言した(ローカル)変数を関数の外部で参照する事は出来ません Form1のイベントでBrowser.Form2クラスのインスタンスを操作したいのであれば Form1クラスに Browser.Form2クラスの変数を用意しましょう Class Browser.Form1 {   Browser.Form2 frm2; } といった具合です Browser.Form2.ShowDialog(); といった使い方は Class Browser.Form2 {   static void ShowDialog()   {   } } といったように 静的メソッド(関数)として宣言されている必要があります System.Windows.Forms.Form.ShowDialog()はフォームのインスタンスを必要とします Form1の何かのイベントで if ( frm2 == null ) {   frm2 = new Browser.Form2(); } frm2.ShoeDialog(); といった具合しましょう

Jun1051
質問者

お礼

ご指導ありがとうございます。ごちゃまぜに考えてしまっていました・・・(汗 無事Form2を表示できるようになりました。

すると、全ての回答が全文表示されます。

関連するQ&A