- - PR -
複数Formを一気に閉じる
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-08-30 14:02
C#でのWindowsアプリ開発を久しぶりに始めたものです。
・MainForm 実行ボタン ・Form1〜3 戻る、次へ、キャンセルボタン があります。 1.MainFormの実行ボタンを押すとForm1を開く 2.Form1の次へを押すと、Form1を非表示にしForm2を開く 3.Form2の次へを押すと、Form2を非表示にしForm3を開く 4.各戻るボタンを押すと一つ前のFormに戻る 5.キャンセルを押すと、どのFormを開いていてもMainFormに戻る 以上の仕様を実装しようと思っています。 現在実装した事 ・次へ MainForm>Form1>Form2・・・ とShowDialogで開き、this.Hide()で自Formを非表示にする。 ・戻る Form1〜3のArrayListを渡していき、自Formの前のFormをShowし、自FormをHide. ・キャンセル Form1〜3のArrayListをループさせ、Close()を実行する 見た目は上記で実現できましたが、ArrayListを使ったりして力技な感がぬぐえません。 もっとスマートなやり方がないかと探しています。 こうやった方がいい等ありましたらご教授いただけませんでしょうか。 よろしくお願い致します。 | ||||||||
|
投稿日時: 2005-08-30 14:19
キャンセルの時の処理が問題となっているのでしょうか?
自分で Form のインスタンスは変数に取っているが、 1 つ前の Form 内にだけインスタンスの参照を持っているので、 キャンセル時に困る... ということでしょうか? で、それらを解決するために、ArrayList を使って管理しているのですよね? ArrayList である必要はないですが、にゃんぎさんの仕様では似たような実装になると思います。 こちらは参考になりますでしょうか? http://support.microsoft.com/default.aspx?scid=kb;ja;JP308537 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-08-30 14:59
>じゃんぬねっと様
返答ありがとうございます。 申し訳ありません、タイトルのつけ方が正しくありませんでした。 やはり、コレクションクラス(私はArraylistでやりましたが)を各Formに渡していってキャンセル時は一気にCloseすると言うやり方になるのですね。(Disposeに変えました) もう一つ考えたのが、MainFormから直接Form1を呼ぶのではなく、中間に管理Classをかませるというものです。 Form1>Form2・・とするのではなく 中間Class>Form1>中間Class>Form2・・・ 実現できるかどうかは試していませんが、間にひとつClassを挟むので遅くなったりしないかと最初の方を選びました。 こういった場合はこうしたほうがいい等あれば引き続きよろしくお願い致します。 | ||||||||
|
投稿日時: 2005-08-30 15:07
とりあえず、今の仕様だとそうなりません?
私としてはその方が複雑に感じてしまいます... 現状の方法で、何が不満であるかを教えて頂けませんか? # そういえば、以前に、次の Form のインスタンスを前の Form で Private に持ち、 # Closing の中でその次の Form のインスタンスを破棄していくソースを見たことが... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-08-30 15:58
ApplicationContextクラスを使うとか
やりたいこととは違いますが、form1→form2の順に画面を遷移させる場合は 以下のようなコードになります。
| ||||||||
|
投稿日時: 2005-08-31 11:41
>じゃんぬねっと
ありがとうございます。 現在の仕様に不満と言うか問題はありません。 ただこのコーディングがあまりに見当外れでないか少々不安でした。 じゃんぬさんのおかげで安心できました。 >ゆうじゅんさん なるほど。Formの遷移にClassをかますやり方はこのように実現できるのですね。 ありがとうございました。 今回はForm1>Form2・・と遷移していき、Formのコレクションを渡していく方法を取ろうと思います。 本当にありがとうございました。 |
1