重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

http://uchukamen.com/Programming1/WebBrowser/ind …
こちらのページのソースコードを基にして、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を少し自作できる程度です。

A 回答 (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();
といった具合しましょう
    • good
    • 0
この回答へのお礼

ご指導ありがとうございます。ごちゃまぜに考えてしまっていました・・・(汗

無事Form2を表示できるようになりました。

お礼日時:2008/05/14 12:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!