C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: C#で自分のフォームを閉じて他のフォームを表示するには


(過去ログ 10 を表示中)

[トピック内 13 記事 (1 - 13 表示)]  << 0 >>

■1322 / inTopicNo.1)  C#で自分のフォームを閉じて他のフォームを表示するには
  
□投稿者/ わいわい (1回)-(2007/02/21(Wed) 14:20:40)

分類:[C# (Windows)] 

タイトルの件ですが、どのようにすればいいのでしょうか?

’フォームを開く
Form1 f = new Form1();
f.show();
’自分のフォームを閉じる
this.Close();

とすると、うまくいかないのですが、みなさんはどのようにしているの
でしょうか?

引用返信 編集キー/
■1338 / inTopicNo.2)  Re[1]: C#で自分のフォームを閉じて他のフォームを表示
□投稿者/ Hirotow (32回)-(2007/02/21(Wed) 17:45:14)
Hirotow さんの Web サイト
2007/02/21(Wed) 17:46:32 編集(投稿者)
仮にthisがメインウィンドウであるならば閉じた時点でアプリケーション自体が終了してしまうので、
メインウィンドウを隠してサブウィンドウをモーダル表示するか、
ApplicationContextを使用するかのどちらかになると思います。

前者の方法は、
class MainForm
{
	private SubForm subForm;

	public MainForm()
	{
		InitializeComponent();

		//サブウィンドウを初期化
		subForm = new SubForm();

		//サブウィンドウが閉じられたときのイベントハンドラを登録
		subForm.OnClosed += subForm_OnClosed();
	}

	private void subForm_OnClosed(object sender, EventArgs e)
	{
		//サブウィンドウが閉じられたら再び表示
		this.Show(); 
	}
	
	//サブウィンドウに切り替え
	private void OpenSubForm()
	{
		//メインウィンドウを隠す
		this.Hide();

		//サブウィンドウをモーダル表示
		subForm.ShowDialog();
	}
}

class SubForm()
{
	public SubForm()
	{
		InitializeComponent();

		this.Load += this_Load;
	}

	private void this_Load(object sender,EventArgs e)
	{
		this.Activate();
	}
}
のようにします。
後者の方法は自分で調べてください。

引用返信 編集キー/
■1612 / inTopicNo.3)  Re[2]: C#で自分のフォームを閉じて他のフォームを表示
□投稿者/ わいわい (2回)-(2007/02/28(Wed) 17:18:36)
まったく分かりません。

このサイトもわかりません。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=35765&forum=7&4

同じことで悩んでいる人がたくさんいるのですね。

引用返信 編集キー/
■1614 / inTopicNo.4)  Re[3]: C#で自分のフォームを閉じて他のフォームを表示
□投稿者/ 未記入 (38回)-(2007/02/28(Wed) 17:28:06)
No1612 (わいわい さん) に返信
> まったく分かりません。
>
> このサイトもわかりません。
> http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=35765&forum=7&4
> 同じことで悩んでいる人がたくさんいるのですね。

何がわからないのかがわかりませんが?
質問するような段階でないと思います。
引用返信 編集キー/
■1623 / inTopicNo.5)  Re[3]: C#で自分のフォームを閉じて他のフォームを表示
□投稿者/ R・田中一郎 (40回)-(2007/02/28(Wed) 19:55:40)
R・田中一郎 さんの Web サイト
No1612 (わいわい さん) に返信
> まったく分かりません。

僕も経験があるのですが、提示されたサンプルコードを眺めた時点で「わからない」となっていませんか?
提案なのですが、サンプルコードを実際に動作させてみてはいかがでしょうか?

そうすることで、漠然と「わからない」ものが、一部分だけ「わからない」ものになってくるので、より解決も早まりますし、皆さんのアドバイスも受けやすくなると思いますよ。

引用返信 編集キー/
■1629 / inTopicNo.6)  Re[3]: C#で自分のフォームを閉じて他のフォームを表示
□投稿者/ Jitta (275回)-(2007/03/01(Thu) 07:47:26)
No1612 (わいわい さん) に返信
> まったく分かりません。
>
> このサイトもわかりません。

動作原理を理解しようとしないからです。

コードではなく説明を三回、声に出して読んでみましょう。
少なくとも、わからない単語がなにかくらいは、わかるでしょう。
横について手取り足取り教えられるわけじゃないので、ある程度自分でわかってもらえないと、困るのさ。
引用返信 編集キー/
■1632 / inTopicNo.7)  Re[1]: C#で自分のフォームを閉じて他のフォームを表示するには
□投稿者/ すけけん (16回)-(2007/03/01(Thu) 09:41:35)
すけけん さんの Web サイト
わいわいさんがイメージしている流れが
Hirotowさんが書いてくれたソースでどこに該当しているかを
考えてみるとわかってくると思いますよ。
がんばってください。
引用返信 編集キー/
■1664 / inTopicNo.8)  Re[2]: C#で自分のフォームを閉じて他のフォームを表示するには
□投稿者/ Hirotow (38回)-(2007/03/01(Thu) 18:57:54)
Hirotow さんの Web サイト
# >わいわいさん
# 返答を確認するペースがあまりに遅すぎます。
# せめて2日毎には確認、返信するようにしてください。

実際に動くコードがあったほうがわかりやすいなら、

http://hcm.wankuma.com/data/kimon/kimon003.zip

を実行してみてください。
おそらくわいわいさんが求めている動作のはずです。

あとはソースコードを順に追ってみてください。
引用返信 編集キー/
■1666 / inTopicNo.9)  Re[3]: C#で自分のフォームを閉じて他のフォームを表示するには
□投稿者/ Jitta (277回)-(2007/03/01(Thu) 19:22:03)
No1664 (Hirotow さん) に返信
> # >わいわいさん
> # 返答を確認するペースがあまりに遅すぎます。
> # せめて2日毎には確認、返信するようにしてください。

それは言わないのがお約束
引用返信 編集キー/
■1668 / inTopicNo.10)  Re[4]: C#で自分のフォームを閉じて他のフォームを表示するには
□投稿者/ Hirotow (39回)-(2007/03/01(Thu) 19:55:05)
Hirotow さんの Web サイト
> それは言わないのがお約束
了解です。
引用返信 編集キー/
■1674 / inTopicNo.11)  Re[5]: C#で自分のフォームを閉じて他のフォームを表示するには
□投稿者/ わいわい (3回)-(2007/03/02(Fri) 09:20:55)
返事送れて申しわけございません。

サンプルコードためさせていただきました。
つまり、Hideするということですか?

Closeではなくて。



引用返信 編集キー/
■1677 / inTopicNo.12)  Re[6]: C#で自分のフォームを閉じて他のフォームを表示するには
□投稿者/ へろへろ (8回)-(2007/03/02(Fri) 09:54:58)
へろへろ さんの Web サイト
No1674 (わいわい さん) に返信
> サンプルコードためさせていただきました。
> つまり、Hideするということですか?
> Closeではなくて。

メインウィンドウをCloseすると終わっちゃいますので、
Hideするわけです。
引用返信 編集キー/
■1680 / inTopicNo.13)  Re[7]: C#で自分のフォームを閉じて他のフォームを表示するには
□投稿者/ Hirotow (41回)-(2007/03/02(Fri) 10:39:02)
Hirotow さんの Web サイト
そういうこと。
それでもってサブウィンドウが消えたら再表示させる。




またそのウィンドウが重たいから閉じたいんだけどって場合は
常に非表示のメインウィンドウ(できればApplicationContext)からサブウィンドウの表示を制御する。

class MainContext : ApplicationContext
{
public MainContext()
{
// 何もしない
}

private void MainContext_Load()
{
if(MyFirstForm.ShowDialog() == DialogResult.OK)
{
MySecondForm.ShowDialog();
}

Exit();
}

[STAThread]
public static void Main()
{
Application.Run(new MainContext());
}
}
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -