VB.NET Tips お手軽にフォーム表示開始位置、サイズを記憶させる
Visual Basic 6.0、Visual Basic.NET(.Framework1.1)までは、フォームを閉じるタイミングで、フォームの画面に対する位置、フォームサイズを記録して、次回、開始時に、記憶した設定に基づいて表示させていました。
ですが、.NetFramework2.0から、ApplicationSettingsの機能を使えば、非常に簡単に、フォーム開始時の位置、サイズ設定が可能となります。
位置、サイズ設定後に問題となる、エラーも処理してあります。
ApplicationSettingsの設定
該当するFormのプロパティを表示させます。
(ApplicationSettings)左上の”+”をクリックして展開。
(PropertyBinding)右の”…”参照ボタンをクリック。
Locationの設定
Location設定で、フォームの位置情報を管理します。
アプリケーション設定画面が表示されます。
プロパティをアプリケーション設定にバインドする:から、”Location”を選択。
”Location”をクリックすると出てくる、↓ボタンをクリック。
”新規”をクリック。
”DefaultValue”欄に必要項目を入力
”X”=100(開始位置のX座標)
”Y”=100(開始位置のY座標)
”Name”=MyLocation(お好きな名前で)
”OK”ボタンで確定
続いて、”ClientSize”の設定
ClientSizeの設定
ClientSize設定で、フォームのサイズ情報を管理します。
プロパティをアプリケーション設定にバインドする:から、”ClientSize”を選択。
”ClientSize”をクリックすると出てくる、↓ボタンをクリック。
”新規”をクリック。
”DefaultValue”欄に必要項目を入力
”Width”=800(開始位置のX座標)
”Height”=600(開始位置のY座標)
”Name”=MyClientSize(お好きな名前で)
”OK”ボタンで確定
動作確認
ここまでの設定で、フォームを閉じた時の位置、サイズ設定で、次回、フォームが立ち上がるはずです。
フォーム、最小化、元に戻す、不具合
すごく、簡単に設定できたので喜ぶところなのですが、この設定をしたフォームは最小化したあと、めちゃめちゃ小さくなります……
最大化したあと、表示される位置がおかしいことになります……
このままでは、到底、使える感じはしません。
フォーム、最小化、元に戻す、不具合の解消策
どうやら、この現象はフォームのWindowStateがNormalに戻る際に、妙な設定の書き込みが行われているようです。
My.Settingが書き込まれる際に、WindowStateが”FormWindowState.Normal”の場合は、書き込みをキャンセルすることで、解消できます。
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load AddHandler My.Settings.SettingChanging, AddressOf Settings_SettingChanging End Sub Private Sub Settings_SettingChanging(ByVal sender As Object, _ ByVal e As System.Configuration.SettingChangingEventArgs) If Not Me.WindowState = FormWindowState.Normal Then If e.SettingName = "MyClientSize" Or e.SettingName = "MyClientSize" Then e.Cancel = True End If End If End Sub End Class
上記のコードを追加することで、キャンセル処理が可能となり、フォームの最小化、元に戻す処理後も、正常にフォームが表示されるようになります。
関連するエントリー
- None Found