みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C# フォーム追加後、旧フォームを閉じたい

前略
・C#で教えてください。
・Form1 からshowDiag()メソッドでForm2をつくります。Form2が表示されたら非アクティブとなったForm1を閉じたいのですが どのようにしたらよいのかおしえてください。
 下記は、Close() メソッドで Form2側から閉じようとしたプログラムですがFrom1を閉じることができません。 よろしくお願いします。

//-----------------------------------------------

namespace formClose
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.ShowDialog();

}
}

  public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{
Form1 form1 = new Form1();
form1.Close(); //Form1が閉じない!!
}

private void button1_Click(object sender, EventArgs e)
{
this.Close(); //Form2を閉じる
}
   }


以上

投稿日時 - 2012-04-07 22:31:25

QNo.7408735

すぐに回答ほしいです

質問者が選んだベストアンサー

> private void Form2_Load(object sender, EventArgs e)
> {
> Form1 form1 = new Form1();
> form1.Close(); //Form1が閉じない!!
> }

これで閉じる訳がないでしょう。
newキーワードの意味、わかってますか?

あと、元のForm1はform2の所有者ですからForm1をCloseしたらform2も閉じてしまいます。
更におそらくこのForm1はアプリケーションが最初に起動するフォームでしょうから、アプリケーション自体が終了してしまいます。
見えなくなればいいだけならHide()で隠しておくのが常道。

とりあえず「ちゃんと基礎を固めた方がいい」と言っておきます。

投稿日時 - 2012-04-07 23:17:56

お礼

前略
・さっそく回答ありがとうございます。
 下記のように Hide()を使いForm1を非表示にすることができました。

namespace formClose
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.Show();
this.Hide();


}
}
}

以上

投稿日時 - 2012-04-08 00:13:38

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問