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

最大化で起動したフォームを元のサイズへするには

環境/言語:[環境:WindowsXP 使用言語:VB2005]
分類:[.NET]

VB2005でVBに再挑戦中の初心者です。

作成したアプリ終了時にデスクトップ上のフォームの位置、フォーム大きさを記録し、
再び起動させた時にフォームを同じ位置、大きさで表示させるように作成しました。

ここでちょっと気になることが生じてしまいましたので、何方かご教授お願いします。

気になることは、最大化表示で終了させた後に、再び起動させるとうまく最大化で表示させる
ことは出来たのですが、最大化からノーマルサイズに戻そうと元に戻すボックスをクリックしても
期待するような大きさになりません。
このような場合は、どのようなコードをどのイベントに書くようにすれば良いのか分からなくなってしまいました。

よろしくお願いいたします。
■No15296に返信(みくさんの記事)
>期待するような大きさ

とは?最大化してもフォームの Height や Width は
有効だと思いますが、それで Height や Width を
記憶するコードが正常な処理を行っているのを、
勝手に最大化する前の大きさが取得できると思ってる…
とかではないの?

# 当方VB2003なので確認はしてません。
2006/02/28(Tue) 21:03:32 編集(投稿者)

お世話になります。

■No15296に返信(みくさんの記事)
My.Settings を始めて使ってみたので
間違ってるかもしれませんが、こんな感じでしょうか。

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
  My.Settings.FormSize = Me.Size
  My.Settings.Save()
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  Me.Size = My.Settings.FormSize
End Sub

[方法 : Visual Basic でユーザー設定を永続化する]
http://msdn2.microsoft.com/ja-jp/library/fwc80dzb.aspx
WindowStateプロパティとTop,Left,Height,Widthの各プロパティをデバッグしてみましょう。
WindowStateプロパティの値によりどのタイミングで保存すればよいかがわかればいいはずです。
言い換えれば保存するタイミングかどうかを判断することになるでしょう。
#SizeChangedイベントも使えるかも。
私も初心者の類なので、先の御三方の様な気の利いた事は言えませんが、私の失敗事例を踏まえて…
もしかして、ByValとByRefの使い方で誤りがありませんか?
的ハズレでしたらスルーしてください。
みなさん、ありがとうございました。

まどかさんが言われているように、WindowStateと保存のタイミングをいくつか考え
対応しました。何とかそれなりの動作が出来るようになりました。

My.Settingsを私も始めて使用しましたが、うまく出来ました。

これからも分からない点がありましたら、ご教授の程よろしくお願いします。

本当に、ありがとうございました。
解決済み!

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