DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォームの位置を復元したい

環境/言語:[XP home,VB.net,.NET Framework1.0]
分類:[.NET]

こんにちは。

VB.NETでフォームの位置・サイズを一度ファイルに保存して、次に起動したときにその位置・サイズを復元して表示させたいのですが、どうすればいいでしょうか?

よろしくお願いします。
White Knightさん、こんにちは。

僕の場合は、ファイルでなくいつもレジストリに保存して行っています。
レジストリに保存して読み込むコードがあるのでのせておきますね。
ファイルで行いたければ、RegistryKeyの読み込みと保存のところをファイル
で行うようにすればいいと思います。
ちなみに、私は○○○のところは、アプリケーションの名前、△△△のところは
フォームの名前を入れています。

(Form_Load時)
Dim regkey As Microsoft.Win32.RegistryKey = _
Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\○○○\△△△", False)

If Not regkey Is Nothing Then
Me.Left = regkey.GetValue("DialogX")
Me.Top = regkey.GetValue("DialogY")
Me.Width = regkey.GetValue("DialogW")
Me.Height = regkey.GetValue("DialogH")

If Me.Height < 300 Then Me.Height = 300
If Me.Width < 500 Then Me.Width = 500

Dim ScreenHeight As Integer = Screen.PrimaryScreen.WorkingArea.Height
If Me.Top + Me.Height > ScreenHeight Then
Me.Top = ScreenHeight - Me.Height
End If

Dim ScreenWidth As Integer = Screen.PrimaryScreen.WorkingArea.Width
If Me.Left + Me.Width > ScreenWidth Then
Me.Left = ScreenWidth - Me.Width
End If

If Me.Top < 0 Then Me.Top = 0
If Me.Left < 0 Then Me.Left = 0

regkey.Close()
End If

(Form_Closed時)
If Me.WindowState = FormWindowState.Normal Then
Dim regkey As Microsoft.Win32.RegistryKey = _
Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\○○○\△△△")

regkey.SetValue("DialogX", Me.Left)
regkey.SetValue("DialogY", Me.Top)
regkey.SetValue("DialogW", Me.Width)
regkey.SetValue("DialogH", Me.Height)
regkey.Close()

End If
End Sub

(TABの入れ方がわからなく見づらくてすみません)
お返事ありがとうございました。

そうですね、レジストリにしたほうが効率がよさそうですね。
わかりやすいコードをありがとうございました。
■No3198に返信(White Knightさんの記事)
> お返事ありがとうございました。
>
> そうですね、レジストリにしたほうが効率がよさそうですね。
> わかりやすいコードをありがとうございました。
>
レジストリを嫌がるユーザーは多いとおもうので、XMLでの方法をひとつ。ぼくは、設定情報を保存するクラスを作成して、そこにさまざまな設定情報を保存させています(ウィンドウの位置やサイズなど・・・)。終了するときにシリアライズしてXMLに保存しています。起動時には、デシリアライズして、オブジェクトを復元して、そのオブジェクトからウィンドウの位置や、サイズ、その他さまざまな設定を復元しています。
2004/03/21(Sun) 13:10:20 編集(投稿者)

■No3201に返信(りょうさんの記事)
> レジストリを嫌がるユーザーは多いとおもうので、XMLでの方法をひとつ。ぼくは、設定情報を保存するクラスを作成して、そこにさまざまな設定情報を保存させています(ウィンドウの位置やサイズなど・・・)。終了するときにシリアライズしてXMLに保存しています。起動時には、デシリアライズして、オブジェクトを復元して、そのオブジェクトからウィンドウの位置や、サイズ、その他さまざまな設定を復元しています。

そうですね。しかし私はいまいちXMLを理解してないので、何かいい方法を考えることにします。ありがとうございました。これを機会にXMLについても調べたいと思います。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板