2007年12月3日月曜日

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

ダイアログの表示のされ方(1)の続きです。
ダイアログには、タイトルバーがあり各種ボタンが並びますが、これまた制御がややこしいため調査しました。
ボタンの場合、表示されているかどうかの他に、動作するかどうかもあります。簡単な話に聞こえますが、表示されていなくてもマウス操作やショートカットキーで動作することもあるため、独立して調査する必要があります。

// ControlBoxが表示される条件
Form.ControlBox == true && Form.ShowIcon == true &&
( Form.FormBorderStyle == FormBorderStyle.FixedSingle || Form.FormBorderStyle == FormBorderStyle.Fixed3D ||
Form.FormBorderStyle == FormBorderStyle.Sizable ||
Form.FormBorderStyle == FormBorderStyle.FixedDialog && Form.Icon != null );

// ControlBoxが動作する条件
Form.ControlBox == true && Form.FormBorderStyle != FormBorderStyle.None;
アイコンが表示されていなくても、Alt+Spaceで動作します。最初からかなりややこしい条件で、泣けました。
// HelpButtonが表示される条件、及び動作する条件
Form.HelpButton == true && Form.ControlBox == true && Form.MinimizeBox == false && Form.MaximizeBox == false &&
( Form.FormBorderStyle == FormBorderStyle.FixedSingle || Form.FormBorderStyle == FormBorderStyle.Fixed3D ||
Form.FormBorderStyle == FormBorderStyle.FixedDialog || Form.FormBorderStyle == FormBorderStyle.Sizable );
Shift+F1については確認できていません。今やヘルプボタンはマイナーな存在になりつつあるため、気にする必要はないかもしれませんね。
// MinimizeBoxが表示される条件、及びMaximizeBoxが表示される条件
( Form.MinimizeBox == true || Form.MaximizeBox == true ) && Form.ControlBox == true &&
( Form.FormBorderStyle == FormBorderStyle.FixedSingle || Form.FormBorderStyle == FormBorderStyle.Fixed3D ||
Form.FormBorderStyle == FormBorderStyle.FixedDialog || Form.FormBorderStyle == FormBorderStyle.Sizable );

// MinimizeBoxが動作する条件
Form.MinimizeBox == true && Form.ControlBox == true &&
( Form.FormBorderStyle == FormBorderStyle.FixedSingle || Form.FormBorderStyle == FormBorderStyle.Fixed3D ||
Form.FormBorderStyle == FormBorderStyle.FixedDialog || Form.FormBorderStyle == FormBorderStyle.Sizable );

// MaximizeBoxが動作する条件
Form.MaximizeBox == true && Form.FormBorderStyle != FormBorderStyle.None;
最小化ボタン・最大化ボタンどちらかが有効になっているときに表示されます。最小化のショートカットを知らないため、見えていて有効になっているとき動作するとしました。最大化に関してはタイトルバーのダブルクリックを含めています。
// CloseBoxが表示される条件
Form.ControlBox == true && Form.FormBorderStyle != FormBorderStyle.None;

// CloseBoxが動作する条件
true;
ControlBoxプロパティそのものでした。Alt+F4は絶えず有効でした。

…疲れました。

0 件のコメント: