2007年12月2日日曜日

ダイアログの表示のされ方(1)

タイトルは何の変哲もないものになってしまいました。
Windowsでは、ダイアログを出すとき、タスクバーに表示されるか・Alt+TABのリストに並ぶか・タスクマネージャに表示されるか、それぞれ制御できるようです。ところが.NET Frameworkには直接的に制御できるのはShowInTaskbarというプロパティぐらいしかなく、制御しづらい上にわかりにくいです。
そこでひたすらパターンを組み合わせてどのように表示されるかまとめてみました。とはいえ、総当たり表を見てもパターンが多すぎてわかりづらいので、逆引き形式で並べてみます。

// タスクバーに表示される条件
Form.ShowInTaskbar == true;

// 3D Flipに表示される条件
Form.ShowInTaskbar == true;

// Alt+Tabに表示される条件
Form.ShowInTaskBar == true ||
Form.FormBorderStyle != FormBorderStyle.FixedToolWindow && Form.FormBorderStyle != FormBorderStyle.SizableToolWindow;

// タスクマネージャに表示される条件
Form.FormBorderStyle != FormBorderStyle.FixedToolWindow && Form.FormBorderStyle != FormBorderStyle.SizableToolWindow;

だんだん、関係ないパラメータに依存してきていることがわかりました。

さらに、タスクバー・Alt+Tab・タスクマネージャにはダイアログアイコンが表示されます。表示されるアイコン自体は共通したものでしたが、アイコンの選択のされ方には微妙な違いがありました。
if( Form.ShowIcon == true && Form.Icon != null )
TheIcon = Form.Icon;
else if( Form.ShowIcon == true && Form.Icon == null && Form.FormBorderStyle != FormBorderStyle.FixedDialog )
TheIcon = Form.ParentForm.Icon;
else
TheIcon = null;

この式でTheIconに値が設定されないときはタスクバーなりタスクマネージャなりのデフォルトが使われる模様?
こうもややこしいと困りますね。

0 件のコメント: