- PR -

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

投稿者投稿内容
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2005-12-20 18:28
引用:

しかしフォームは前面にくるのですが、親フォームを操作できてしまいます。親フォームを操作できないようには出来ないでしょうか?


フォームを無効にしたり必要なコントロールのみを無効にしたりといろいろあるでしょう。
まず、フォームを表示することにより自動で希望の動作が得られると考えるのではなく
その処理をおこなっている最中に許可できないものは何かを考えるという方向だとすっきりします。
呼び出し側にそのOnOffのプロシージャを作っておくのが楽でしょう。>必要なら
他に同様の処理が出ても使い回しができますし。

そう考えると、今回の子フォームは飾りに過ぎないということがお分かりになると思います。
キラ
大ベテラン
会議室デビュー日: 2005/12/10
投稿数: 104
投稿日時: 2005-12-20 19:22
回答、ありがとうございます。
桜緋女さんの方法で試してみたいと思います。
キラ
大ベテラン
会議室デビュー日: 2005/12/10
投稿数: 104
投稿日時: 2005-12-23 00:06
コード:


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




上記の方法でサブフォームが閉じるのでしょうか。
もう少し詳しく教えていただけないでしょうか?


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

トトロさんの書き込み (2005-12-23 00:06) より:

上記の方法でサブフォームが閉じるのでしょうか。
もう少し詳しく教えていただけないでしょうか?


// ShowDialog メソッドで表示し frm1 側で this.Close() させる

と、書いてありますよね?

using を使ってませんが同じような例は先に紹介したように、

  フォームを閉じたボタンを取得する

が参考になるかと思います。

このあたりについては、ある程度デバッグ実行などをすることで、
必ずや仕組みは理解できると思います。

# 判っているかと思いますが、ShowDialog メソッドはモーダル表示であることに注意してくださいね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
キラ
大ベテラン
会議室デビュー日: 2005/12/10
投稿数: 104
投稿日時: 2005-12-23 23:21
お世話になります。
上記記述ですが
if (frm1.ShowDialog() == DialogResult.OK)
の部分で処理が止まってしまって、画面が閉じないのではないですか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-24 01:48
引用:

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

if (frm1.ShowDialog() == DialogResult.OK)
の部分で処理が止まってしまって、画面が閉じないのではないですか?


それをモーダルと言うのです。
もう一度書きますが、

// ShowDialog メソッドで表示し frm1 側で this.Close() させる

試せば判ることなのですが、このタイミングで閉じるのです。

トトロさんの詳細な状況が判らなかった時の私の回答を、
今になってこのように返されているわけですが、
もし当初の質問の延長であるならば、あまり意味がありません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
キラ
大ベテラン
会議室デビュー日: 2005/12/10
投稿数: 104
投稿日時: 2005-12-24 10:19
長々とすみませんでした。
わかりました。

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