* 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.
リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
浮子屋商店もよろしく。

C#コード断片/共通/ウィンドウが画面外に表示された場合に戻す のバックアップの現在との差分(No.1)


ウィンドウが画面外に表示された場合に戻す

終了時の画面のサイズ、位置を保存している場合、保存後にデスクトップのサイズが 変化したりすると、ウィンドウが画面外に表示されてしまったりする場合がある。 それを検知して、画面内に引き戻すコード。

// ---- FormのLoadイベントなどに記述する ----
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
#spanend
#spanadd
// ---- FormのLoadイベントなどに記述する ----
#spanend
#spanadd
 
#spanend
#spanadd
Point backLocation=this.Location; //Windowsが用意したデフォルト位置を保存
#spanend
#spanadd
this.Location=option.MainWindowPosition;//保存した位置を戻す例
#spanend
#spanadd
this.ClientSize=option.MainWindowSize;//保存したサイズを戻す例
#spanend
#spanadd
//ここでClientSizeを基準にしているのは、テーマ変更等を考慮している(はず)
#spanend
 
 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;
 }
#spanadd
this.WindowState=FormWindowState.Normal;//これを忘れると困る
#spanend
#spanadd
//デスクトップのワークエリアとウィンドウの矩形が重なっていなかったら位置を戻す
#spanend
#spanadd
if(System.Windows.Forms.Screen.GetWorkingArea(this).IntersectsWith(this.Bounds)==false){
#spanend
    this.Location=backLocation;
#spanadd
}
#spanend
 
 // ---- おまけ:位置を保存する場合、FormのCloseイベントなどに記述する ----
 this.Visible=true;
 this.WindowState=FormWindowState.Normal;//これを忘れると困る
 option.MainWindowPosition=this.Location;
 option.MainWindowSize=this.ClientSize;
#spanadd
// ---- おまけ:位置を保存する場合、FormのCloseイベントなどに記述する ----
#spanend
#spanadd
this.Visible=true;
#spanend
#spanadd
this.WindowState=FormWindowState.Normal;//これを忘れると困る
#spanend
#spanadd
option.MainWindowPosition=this.Location;
#spanend
#spanadd
option.MainWindowSize=this.ClientSize;
#spanend
#spanadd

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White