![]() |
* U K I Y A H O N P O * Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura, che la diritta via era smarrita. |
C#コード断片/共通/ウィンドウが画面外に表示された場合に戻す のバックアップ(No.1)
ウィンドウが画面外に表示された場合に戻す終了時の画面のサイズ、位置を保存している場合、保存後にデスクトップのサイズが 変化したりすると、ウィンドウが画面外に表示されてしまったりする場合がある。 それを検知して、画面内に引き戻すコード。 // ---- 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; |