ボタンを押して、フォームを起動直後の状態にしたい への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 ぼたん  (高校生) 投稿日時 2010/8/18 16:14:12
皆さんありがとうございました!

るきおさんの方法が、一番手っ取り早くてよかったのですが、neptuneさんや流れ者さんがおっしゃるとおり、後々自分が見て分かるような方法、ほかの人が見てもすぐ分かるような方法は、今までの方法だったので、今までどおりにやっていこうと思います。

また伺うかもしれませんが、そのときもよろしくお願いしますm(_ _)m
投稿者 流れ者  (社会人) 投稿日時 2010/8/18 00:10:12
こんばんは。

スレット内容からは外れますが、感じたことを少々。

neptuneさんが書かれているように、ぼたんさんの方法は間違っていません。一見、管理が難しいように見えますが、初期化処理を一つの関数にして、画面を初期化するときはそれを呼び出す方法は、ポピュラーな方法です。

この方法の利点は、
1.各項目の初期化内容が明確に分かる。(項目が多い場合でも、コメントをつければ煩雑にならない)
2.初期化内容に変更があった場合に修正が楽。
3.特殊な初期化(ある項目の内容により、初期化の内容が変わる等)の場合の処理の記述がしやすい。
があります。

コードの量に関しても、「me.」で、その画面のコントロールのリストが出るので、さほど苦にはならないと思います。
投稿者 るきお  (社会人) 投稿日時 2010/8/16 20:00:47
初期状態ということならこれでどうでしょうか?

    
Me.Controls.Clear()
Me.InitializeComponent()
投稿者 neptune  (社会人) 投稿日時 2010/8/15 22:05:54
久しぶりに書き込みます。

>何かいい方法で一発で決められるような方法ってないですか?
基本的にはないと思います。

案1.
フォーム表示用クラスを作成し、一度formをcloseし、再度表示させる。
案2.
MDI画面にして同じ子ウィンドウ(Form)を作成してやる。不要なら前の子ウィンドウは閉じる。

等も考えられますが、ぼたんさんのやり方が一番わかりやすいし、メンテも簡単と思いますよ。

設定値は分かりやすいようにどこかにまとめて保管しておいても良いし。。
投稿者 ぼたん  (高校生) 投稿日時 2010/8/15 20:46:45
はじめまして^^

まだVBをやり始めて(部活等々で)、2ヶ月経ち、このサイトによく来るようになりました。
非常に分かりやすく、よく参考にさせてもらってます。

質問なのですが、題名のとおり、ボタンを押して、フォームを起動直後の状態にしたいのですが、うまくいきません。。。

今のところ、
 Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        Reset()
    End Sub


   ''' <summary> 
    ''' フォームをを最初の状態に戻します。 
    ''' </summary> 
    ''' <remarks></remarks> 
    Private Sub Reset()
        Me.Size = New Size(450, 150)
        Panel1.Visible = True
        Label5.Visible = False
        Label6.Text = ""
        Timer1.Enabled = False
        Timer2.Enabled = False
    End Sub


のような感じで、自分で起動直後のフォームの状態のプロパティを宣言して、それをButton1のClickイベントで呼び出すようにしています。

しかし、これだとコードも長くなりますし、管理が大変です・・・。

何かいい方法で一発で決められるような方法ってないですか?

ちなみに「Visual Basic 2008 Express Edition」 を使っています。

よろしくお願いしますm(_ _)m