- - PR -
ShowDialogと最小化ボタンについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-02-01 20:28
凄い単純な質問かもしれないのですが、御存知の方がいたら回答をお願いします。
WindowsXP環境のVB2005で以下のようなコードを書いて 複数のフォーム(3個以上)をモーダル表示した後に『最小化ボタン』を押して タスクバーに最小化をしたとします。 (例:タスクバーに『Frm1』『Frm1'』『Frm1''』みたいな状態 その後、タスクバーで真ん中のフォーム(例では『Frm1'』)を 選択すると選択したフォームが表示されるのですが最前面に来るはずの フォーム(『Frm1''』)がタスクバーに残ってしまいます。 どうにかしてタスクバーで真ん中のフォーム(『Frm1'』)を選択した時に (『Frm1''』)が最前面に来るように設定する方法はあるでしょうか? マウスで最前面に来るはずのフォームをクリックすれば復帰するのは 分かっているのですがユーザーにわずらわしい操作や勘違いを 起こさせたくないと思って対応方法を考えています。 ShowDialogの引数でOwnerに親画面を引渡してあげてもダメでした。 また、タスクバーで最初の呼出しフォーム(『Frm1』)や 最後の呼出しフォーム(『Frm1''』)を選択した時は、 この問題は発生しません。 どなたか情報を御持ちでしたら助言を宜しくお願いします。 <問題のコード> ===================== Public Class Frm1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim NewForm As New Frm1 NewForm.ShowDialog(Me) End Sub End Class ===================== | ||||
|
投稿日時: 2007-02-02 00:35
ShowInTaskbar を false にしてみるとかどうでしょう。
ShowDialog で開くならタスクバーにアイコンを増やす必要はないと思いますし。 _________________ かるあ のメモ と スニペット | ||||
|
投稿日時: 2007-02-02 11:15
かるあさん回答ありがとうございます。
やはり、ShowInTaskbar を false にする方法しかないですかね。 デザインの問題で、出来ればタスクバーにアイコンを表示するように 設定したかったのですが、もう少し他の方法も考えてみたいと思います。 | ||||
|
投稿日時: 2007-02-02 11:52
かるあさんが書いているのは回避策であって、方法がないというものではないでしょう。 たとえば、Frm' が Frm'' の死活管理をしていれば何とでもできます。 Frm' の Activated イベントで Frm'' が生きていれば、WindowState を Normal にします。 ただし、この場合 Frm' の再描画が必要になるかと思います。 # ところで、この現象は不具合ではないかと考えています。 # タスク バーの Frm もしくは Frm'' から、元に戻した場合は意図したとおりに動きます。 # Frm' から元に戻した場合のみ、意図したとおりに動作しないのは妙です。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-02-05 09:18
じゃんぬねっとさん情報ありがとうございます。
不具合ですか、マイクロソフトのサポート技術情報を 調べてみましたが該当の記述はありませんでした。 一度は、サポートに問合せをするべきなんですかね? (インシデントを消費してしまうとチョッと問題ですが・・・) 親画面から子画面の死活監視という方法はプログラム間の 結合度が高くなってしまうので出来れば避けたいと思ってます。 タスクバーのアイコンを一つにする方針で修正を考えていきます。 |
1