質問 |
||
| QNo.4028999 | WindowsFormの消去について(C#) | |
|---|---|---|
| 質問者:nobil |
こんにちわ。 C#(WindowsForm)で以下のような処理を考えています。 1.起動するとForm1(ログイン画面)が開く 2−1.認証に成功 → 3へ 2−2.認証に失敗 → メッセージを表示し、ログイン画面のユーザ名にフォーカスをセット 3.Form3(メインメニュー)を開く そこで、スタートアップの画面は、Form1で良いと思うのですが、 2−1の場合に、以下のようなコードを書いてみました。 *************************************** Form3 f = new Form3(); f.ShowDialog(this); f.Dispose(); this.Close(); *************************************** これでは、次の部分で目的を達成できませんでした。 A.Form3をShowDaialog(this)で開くと、モーダルモードで開くだけとなってしまう。 Showではモードレスとなるだけ。 B.Dispose、Closeを記述してみたが、Form3が開いた時に、 画面上からForm1が消えるわけではない。 Closeでは、システム自体が終了してしまう。 そこで、ShowDialogやShowではなく、Form1を消し、Form3を表示するメソッド等あるのでしょうか? ちなみに、Form3をCloseした場合に、Form1を再度呼び出す処理は考えていません。 |
|
困り度:
|
||
| 質問投稿日時: 08/05/17 14:42 |
||
回答良回答20pt |
|
| ANo.1 | Form1をCloseしてしまうとプロジェクトの設定によってはアプリケーションが終了してしまいます また、非表示にする前に設定されたデータなども全て失います 単に非表示にしたいのであれば this.Hide(); で非表示しましょう 再表示するには this.Show(); で可能です 今回の場合なら ログイン用のForm1は モードレスでかまわないとも思います 2-1、2-2自体は Form1のなかで完結していればいいことだと思います .NET Framework1.0/1.1なら Mainプロシージャを工夫してやらないといけないでしょう .NET Framework2.0以降なら プロジェクトのプロパティの アプリケーションタブのシャットダウンモードを『最後のフォームが閉じたとき』にしてやればよさそうです |
|---|---|
| 回答者:redfox63 | |
| 種類:回答 どんな人:専門家 自信:参考意見 |
|
| 回答日時: 08/05/17 15:18 |
|
| |
| この回答へのお礼 | redfox63さん、回答ありがとうございます。 >また、非表示にする前に設定されたデータなども全て失います >単に非表示にしたいのであれば >this.Hide(); >で非表示しましょう >再表示するには this.Show(); で可能です Hide()とするのが良いのですね。 どうも、今まで、別言語でClose(に近い)とすると、 Form1がメモリから破棄されるようなイメージを持っていたので、 今回の件は不思議でした。 >2-1、2-2自体は Form1のなかで完結していればいいことだと思います この点、ご指摘の通りです。 >.NET Framework2.0以降なら プロジェクトのプロパティの アプリケーションタブのシャットダウンモードを『最後のフォームが閉じたとき』にしてやればよさそうです このプロパティも、初めて目にしました。 早速、やってみます。 ありがとうございます。 |