ダイアログの表示のされ方(1)の続きです。
ダイアログには、タイトルバーがあり各種ボタンが並びますが、これまた制御がややこしいため調査しました。
ボタンの場合、表示されているかどうかの他に、動作するかどうかもあります。簡単な話に聞こえますが、表示されていなくてもマウス操作やショートカットキーで動作することもあるため、独立して調査する必要があります。
// ControlBoxが表示される条件アイコンが表示されていなくても、Alt+Spaceで動作します。最初からかなりややこしい条件で、泣けました。
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;
// HelpButtonが表示される条件、及び動作する条件Shift+F1については確認できていません。今やヘルプボタンはマイナーな存在になりつつあるため、気にする必要はないかもしれませんね。
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 );
// 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が表示される条件ControlBoxプロパティそのものでした。Alt+F4は絶えず有効でした。
Form.ControlBox == true && Form.FormBorderStyle != FormBorderStyle.None;
// CloseBoxが動作する条件
true;
…疲れました。
0 件のコメント:
コメントを投稿