* ウィンドウが画面外に表示された場合に戻す [#feab5d5c]
終了時の画面のサイズ、位置を保存している場合、保存後にデスクトップのサイズが
変化したりすると、ウィンドウが画面外に表示されてしまったりする場合がある。
それを検知して、画面内に引き戻すコード。
#code(Csharp,nooutline){{
// ---- FormのLoadイベントなどに記述する ----
Point backLocation=this.Location; //Windowsが用意したデフォルト位置を保存
this.Location=option.MainWindowPosition;//保存した位置を戻す例
this.ClientSize=option.MainWindowSize;//保存したサイズを戻す例
//ここでClientSizeを基準にしているのは、テーマ変更等を考慮している(はず)
this.WindowState=FormWindowState.Normal;//これを忘れると困る
//デスクトップのワークエリアとウィンドウの矩形が重なっていなかったら位置を戻す
if(System.Windows.Forms.Screen.GetWorkingArea(this).IntersectsWith(this.Bounds)==false){
this.Location=backLocation;
}
// ---- おまけ:位置を保存する場合、FormのCloseイベントなどに記述する ----
this.Visible=true;
this.WindowState=FormWindowState.Normal;//これを忘れると困る
option.MainWindowPosition=this.Location;
option.MainWindowSize=this.ClientSize;
}}