- PR -

モーダルフォームの閉じ方

投稿者投稿内容
キラ
大ベテラン
会議室デビュー日: 2005/12/10
投稿数: 104
投稿日時: 2005-12-20 12:57
いつもお世話になっております。

フォームをShowDialogメソッドで開いています。
プログラムだけでそのフォームを閉じたいのですがうまくいきません。
どのようにすればよいでしょうか。
ご教授ください。
キラ
大ベテラン
会議室デビュー日: 2005/12/10
投稿数: 104
投稿日時: 2005-12-20 12:59
記述し忘れました。C#アプリケーションです。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-12-20 13:26
Form.Close()メソッドでいけますよ。

一番簡単なのはShowDialogで開かれた子フォームの処理で
this.Close()
じゃないですか。

「プログラムだけ」というのが良く分かりませんが、例えばある一定の時間が過ぎたら閉じるなどということならば、別スレッドで子フォームのClose()を呼べば良いです。

あと、C#かどうかよりもWindowsフォームかASP.NETかを書いた方がいいですね。
C#で書いたASP.NETのプログラムも"C#アプリケーション"ですから。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2005-12-20 13:27
C#なんてさわったこともないですけどね。
モーダルなものというのは、開いた側では閉じることができず、
開かれた側で閉じなければならないものなのではないでしょうか。

そういう話じゃない?
キラ
大ベテラン
会議室デビュー日: 2005/12/10
投稿数: 104
投稿日時: 2005-12-20 14:12
失礼しました。Windowsフォームで作成しています。
親フォームから子フォームをモーダルで表示しています。
その時にShowDialogを使うと処理がそこで止まってしまいます。
モーダルの子フォームを開きつつ、親フォームの処理を進める書き方があるでしょうか?
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2005-12-20 14:19
子フォームを開くとき、非モーダルなフォームとして開けばすむのでは。

どうしてもモーダルでなければならない?
スレッドを起こすとか方法はあるかもしれませんが、
その次に、親フォームの処理と子フォームの処理のすりあわせをどうするか、
って質問にくるに決まってます。

私だったら、設計を見直します。処理の拘束条件[追記]や依存関係[/追記]を整理しましょう。

[ メッセージ編集済み 編集者: Edosson 編集日時 2005-12-20 14:23 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-20 14:29
引用:

トトロさんの書き込み (2005-12-20 12:57) より:

フォームをShowDialogメソッドで開いています。
プログラムだけでそのフォームを閉じたいのですがうまくいきません。


フォームの連携で良くある例

コード:

    using (Form1 frm1 = New Form1) {
        // ShowDialog メソッドで表示し frm1 側で this.Close() させる
        if (frm1.ShowDialog() == DialogResult.OK) {
            // TODO : サブ フォーム側での内容をここで適用
        }
    } // ここで frm1 は Dispose される


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-20 14:31
引用:

トトロさんの書き込み (2005-12-20 14:12) より:

その時にShowDialogを使うと処理がそこで止まってしまいます。
モーダルの子フォームを開きつつ、親フォームの処理を進める書き方があるでしょうか?


Show メソッドを使いましょう。
ShowDialog が望ましいということはオーナーを持つべきということでしょうか?
であれば、以下のようになります。

  フォームを特定のフォームより手前に表示する

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)