- - PR -
モーダルフォームの閉じ方
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-12-20 16:28
先ほどから「上記」と言われてますが、どれなのかが判りません... ところで、しばらくお待ちくださいを同じプロセス内で、 一定の間描画させるのは、単純なようで実は難しいです。 というのも、制御を一定のタイミングで返しても Busy 状態に陥ることがあるからです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-12-20 16:35
そういえば私もモードレスに変更したんだと思い込んでいます>< | ||||||||
|
投稿日時: 2005-12-20 16:46
記述不足で申し訳ありません。
結果は下記のようになりました。 ・モーダル表示にしております。 ・子フォームの表示文字については Label1.Text = "しばらくお待ちください" Label1.Refresh で解決できました。 この表示には問題も含んでいるようなので、修正が必要かもしれませんが… | ||||||||
|
投稿日時: 2005-12-20 17:12
すみません、なんだか勘違いか記憶違いかしてたみたいですね。 混乱させてごめんなさいです。 | ||||||||
|
投稿日時: 2005-12-20 17:29
それだと呼び出し元に制御が返りませんよね? ということは、呼び出し先で「待たなければならない処理」を呼び出しているのでしょうか?
子フォームとは呼び出し先のフォームのことですよね。 表示自体には問題はないのですが、一連の処理のフローに構造的にまずい問題があるかもしれません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-12-20 17:55
参考までに。 じゃんぬねっとさんも前投稿で提示されていますが、僕は同様に処理中ウィンドウを表示する場合は、モーダレスフォームを常に手前に表示する方法を使っています。この方法だと、使いまわしが効きます。 なので、アニメーション表示させたりプログレスバー表示させたりと多彩なオプションつけたりと作るのも楽しいです。
| ||||||||
|
投稿日時: 2005-12-20 18:08
勘違いをしていました。
モーダレス(showメソッド)を使用しています。 AddOwnedFormメソッドを使ってフォームを前面に表示しています。 これで解決したと思っていました。しかしフォームは前面にくるのですが、親フォームを操作できてしまいます。親フォームを操作できないようには出来ないでしょうか? | ||||||||
|
投稿日時: 2005-12-20 18:17
単に処理の前後にMe.Enabled=Falseではダメでしょうか?
ちなみに以下は、昔似たようなケースでVB6で苦し紛れにやった処理です。 1)モーダルフォーム表示中に行う処理を、クラスに纏める。 2)呼び出し元からモーダルフォームを起動する前に、(1)のインスタンスを渡してあげる。 3)モーダルフォームから(1)の処理を呼び出す。 4)プログレスバーの更新など、モーダルフォームの表示更新が必要な場合は、(1)のクラスのイベントとしてモーダルフォームに通知する。 |