1

C#のプロジェクトにfrmRegistration&という名前の 2 つのフォームがあります。frmMain

開始フォームfrmRegistrationとして設定しました。 ユーザーはフォームにデータを入力し、送信ボタンを押して登録します。次に、フォームを閉じてフォームをユーザーに表示したいと思います。のメソッドを 使用してこれを試しています。しかし、このメソッドを使用すると、スタートアップ フォームであるため、アプリケーションの実行がすべて破棄されます。
frmRegistrationfrmRegistrationfrmMain
Dispose()frmRegistrationfrmRegistration

私はこれが起こることを望んでいません。誰でもこの問題を解決できますか?

ありがとう。

4

4 に答える 4

3

用途Show()Hide()方法。

    private void btnSubmit_Click(object sender, EventArgs e)
    {
      ...
      var frm = new frmMain();
      frm.Location = this.Location;
      frm.StartPosition = FormStartPosition.Manual;
      frm.Show();
      this.Hide();
    }  

更新:
frmRegistration をメモリに保持したくない場合は、プログラムをメイン フォームで開始し、これを MainForm のShownイベント に追加します。

    var frm = new frmRegistration();
    frm.Location = this.Location;
    frm.StartPosition = FormStartPosition.Manual;
    frm.FormClosing += delegate { this.Show(); };
    frm.Show();
    this.Hide();  

これで、登録フォームを閉じるだけで、自動的にメイン フォームに戻ることができます。

于 2011-05-03T06:42:07.417 に答える
2

frmMain をスタートアップ フォームとして設定し、最初は非表示にして、frmRegistration を表示し、必要な処理を行い、破棄してみてください。

于 2011-05-03T06:47:06.997 に答える
0

少なくとも2つのオプションがあります。1。スタートアップフォームをシングルトンに変換する非表示にする必要がある場合は、hideメソッドを呼び出します。

2.新しい別のスタートアップフォームを用意し、それをMainAppフォームなどと呼び、非表示に設定します。他の非スタートアップフォームで好きなことを行うことができます。

于 2011-05-03T07:02:01.443 に答える
0

また、関数をProgram.cs使用してメインクラスを開始するように変更し、肯定的または別のチェックの後、メインフォームとメッセージループとして開始することもできます。Main()frmRegistrationDialogResultfrmMain

于 2011-05-03T06:56:51.403 に答える