0

GUI内でさまざまな機能を実行するための企業のプログラムをシミュレートするプロジェクトに取り組んでいます(VS2010でC#を使用)。現在、機能ごとに 1 つずつ、約 10 種類のフォームがあります (メニューとしての機能、さまざまなフォームへの記入、フォームの管理など)。これまでのところ、次のようなものを使用してきました。

Form1 myForm1 = new Form1();
myForm1.Show();

新しい画面を開く

this.Hide();

現在アクティブなフォームが終了したとき。(this.Close()プログラム全体を閉じるようです)

これにより、フォームの右上にある X をクリックした後もプロセスが実行され続けるという問題が発生します (これは、非表示のフォームが適切に閉じられていないことが原因だと思います)。また、ユーザーがプロセスを十分に長く停止せずにプログラム内ナビゲーションを使用すると、フォームの絶え間ない生成と非表示がすべてのメモリを占有することになるのではないかと思います。

実際のところ、ユーザー ナビゲーションを可能にするために常に新しいウィンドウやフォームを開くことに依存しているプログラムはめったに見ません。インストーラーなどのプログラムは通常、何らかのイベントを使用して、現在表示されているコンテンツを非表示にし、新しいフォーム/ウィンドウに変更することなく新しいコンテンツを表示します。どうすればこれを行うことができますか?ボタン/テキストボックス/ラベルがすべて1つの画面に積み重ねられているが、隠されているか、それとももっと直感的に欠けているものがありますか?

4

2 に答える 2

0

これを行う方法 (常に実行できるとは限りません) は、各画面にUserControlを作成することです。次の画面に移動するときは、現在のユーザー コントロールを非表示にして、次のユーザー コントロールを表示するだけです。たとえば、8 つの画面がある場合は、それぞれの画面をユーザー コントロールにします。

次に、MainForm の Load イベントで、最初の 1 つを除くすべてを最初に非表示にします。2 番目の画面に移動するときは、最初のコントロールを非表示にして 2 番目のコントロールを表示します。

于 2013-04-12T15:13:37.573 に答える
0

ある種の MDI セットアップの使用を調べましたか: http://www.codeproject.com/Articles/7571/Creating-MDI-application-using-C-Walkthrough

于 2013-04-12T15:12:57.807 に答える