ホーム > VB.NET, コンピュータ > VB.NET Tips お手軽にフォーム表示開始位置、サイズを記憶させる

VB.NET Tips お手軽にフォーム表示開始位置、サイズを記憶させる

2009 年 4 月 7 日

お手軽にフォーム表示開始位置を記憶させる

photo by p77

Visual Basic 6.0、Visual Basic.NET(.Framework1.1)までは、フォームを閉じるタイミングで、フォームの画面に対する位置、フォームサイズを記録して、次回、開始時に、記憶した設定に基づいて表示させていました。

ですが、.NetFramework2.0から、ApplicationSettingsの機能を使えば、非常に簡単に、フォーム開始時の位置、サイズ設定が可能となります。

位置、サイズ設定後に問題となる、エラーも処理してあります。

ApplicationSettingsの設定

該当するFormのプロパティを表示させます。

(ApplicationSettings)左上の”+”をクリックして展開。

(PropertyBinding)右の”…”参照ボタンをクリック。

ApplicationSettings

Locationの設定

Location設定で、フォームの位置情報を管理します。

アプリケーション設定画面が表示されます。

プロパティをアプリケーション設定にバインドする:から、”Location”を選択。

”Location”をクリックすると出てくる、↓ボタンをクリック。

”新規”をクリック。

”DefaultValue”欄に必要項目を入力

”X”=100(開始位置のX座標)
”Y”=100(開始位置のY座標)
”Name”=MyLocation(お好きな名前で)

”OK”ボタンで確定

Location設定

続いて、”ClientSize”の設定

ClientSizeの設定

ClientSize設定で、フォームのサイズ情報を管理します。

プロパティをアプリケーション設定にバインドする:から、”ClientSize”を選択。

”ClientSize”をクリックすると出てくる、↓ボタンをクリック。

”新規”をクリック。

”DefaultValue”欄に必要項目を入力

”Width”=800(開始位置のX座標)
”Height”=600(開始位置のY座標)
”Name”=MyClientSize(お好きな名前で)

”OK”ボタンで確定

ClientSizeの設定

ClientSizeの設定

動作確認

ここまでの設定で、フォームを閉じた時の位置、サイズ設定で、次回、フォームが立ち上がるはずです。

フォーム、最小化、元に戻す、不具合

すごく、簡単に設定できたので喜ぶところなのですが、この設定をしたフォームは最小化したあと、めちゃめちゃ小さくなります……

最大化したあと、表示される位置がおかしいことになります……

このままでは、到底、使える感じはしません。

フォーム最小化後のちびっこいフォーム……

フォーム、最小化、元に戻す、不具合の解消策

どうやら、この現象はフォームの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

VB.NET, コンピュータ , , , , ,

  1. コメントはまだありません。
  1. トラックバックはまだありません。