-1

私は考えていた。Microsoft Word、Excel などのアプリケーションは、内部に空白がある新しいフォームをどのように作成しますか。それは、別の新しいフォームを作成するようなものです。

私はコードを試しました:

this.Hide();

Form2 secondaryForm = new Form2(); 
secondaryForm.ShowDialog();

this.Close();

上記のコードは新しい空白のフォーム (新しいフォーム) を作成するためのものですが、それは期間限定です。私が疑問に思っていたのは、アプリケーションはどのようにしてこの無制限の時間で千の新しい空白のフォーム (新しいフォーム) を作成できるのでしょうか?

注:無制限の時間とは、新しいフォームを作成できるということです。「新規」ボタンを何度クリックしても、フォームは常に作成されます。

前もって感謝します!

4

4 に答える 4

2

私の上の答えは良いですが、それらを拡大したいと思います。

コードが機能しない理由は、メイン フォームを閉じているためです。

メイン フォームは、プログラムの開始時に実行するフォームです。単純な winform を作成してmain関数を見ると、次のようなものが表示されます。

     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     Application.Run(new Form1());

Form1 を閉じると、ここに戻って実行を継続し、メイン関数を終了してプログラムを終了します。

他の人が提案したことに加えて、表示されないメインフォームを作成し、メインフォームの作成直後に別のフォームを作成することができます。このようにして、必要に応じてフォームを閉じたり開いたりすることができ、プログラムを閉じることはありません。

あなたが求めたのは、いくつかのフォームを開くことができるようにすることです。あなたができることは、単に行うことです:

Form frm = new Form();// Creating a form
frm.Show();// displaying the form

ShowDialogメソッドは何をするかshowだけでなく、それを開いたフォームをフリーズします。だからあなたはおそらくそれを望まない

于 2013-08-20T10:38:22.463 に答える
0

簡単です。必要なフォーム クラスの新しいインスタンスを作成し、そのShowメソッドを呼び出すだけです。

MyForm frm = new MyForm();
frm.Show();

現在、モーダルShowDialogダイアログを作成するメソッドを使用しています。つまり、ユーザーがそれを閉じるまで、アプリケーションの残りの部分とのユーザー インタラクションをブロックします。それはあなたが望むものではありません。

また、実際に元のフォームを閉じたい場合を除き、 Hideandメソッドを呼び出す必要はありません。CloseOffice アプリケーションはこれを行いません。「新規」は単に新しいウィンドウを開き、現在のウィンドウはそのまま残します。

新しいフォームを開くときに元のフォームを閉じたい場合は、次のようにします

// Create and display new form
MyForm frm = new MyForm();
frm.Show();

// Close this form
this.Close();
于 2013-08-20T10:20:22.540 に答える
0

次のコードでは、メイン フォームを閉じずに任意の数のフォームを開くことができます。

//this.Hide();

Form2 secondaryForm = new Form2(); 
secondaryForm.Show();

//this.Close();
于 2013-08-20T10:19:09.510 に答える