Windowの位置とサイズの保存

めっさお久しぶりです。
最近、やっと新しい職場でもプログラミングに集中できるようになりまして(というかプログラマが自分しかいないというか)、C#にもそれなりに慣れてきたので、久々に更新してみようかと。

設計を担当している同僚に「ウィンドウの位置とサイズを保存するようにして。確か、ネットに簡単な方法が書いてあったから」と言われて、調べてみたのが@ITのこの記事。

.NET TIPS
Windowsアプリケーションの位置やサイズを保存するには?[2.0のみ、C#VB
http://www.atmarkit.co.jp/fdotnet/dotnettips/438winsettings/winsettings.html

で、早速実装したところ、ものすごく挙動不審。
問題1)バックグラウンドに隠れたら、復帰するときにはめっさ小さくなってる。
問題2)ウィンドウの右上をドラッグしてサイズ変更しようとすると、サイズが変更されずに移動する。

なんじゃコレと思い、さらにググってみると、案の定できないと苦労している人が。

Properties.Settingsでのフォーム状態保存で、挙動不審
http://dobon.net/vb/bbs/log3-29/17479.html

なにやらいろいろ頑張っておられるので、サクッとコピペして試してみたところ、問題1はクリアできていたけど、問題2は残ったまま。

で、ちょっと冷静になって考えてみる。

・・・ん?

そもそも、これってバインディングする必要あんのか?

えーと、Properties.Settings.Defaultに、保存するプロパティを追加するのはアプリケーションの「設定」タブからできるよね?
で、FormClosingイベントで保存してる。

もしかして、
1)FormClosingで(WindowStateをNormalに戻したうえで)BoundsプロパティをProperties.Settings.Defaultに代入して保存する
2)FormLoadイベントでProperties.Settings.Defaultから読みだして、Boundsにセットし直す
ってだけでいいんじゃないか?


結果。


あっさりできました。


今回のエントリは、この問題でさんざんググって困っている人のために書きました。
おしまい。