• ベストアンサー

formをもう一度Loadする方法

form1をLoadした後 別のページに移動後またform1に戻ってきた場合 もう一度ロードするにはどうしたらいいでしょうか? 例えば、画面1で画像をクリックして消すとします。 そのページから画面2に行きまた画面1に戻った時に、ここでまたフォームをロードをして画像が消える前にしたいのです。 ロードで宣言はしているのですがうまくいきません。 調べたのですが調べ方が悪いのかまったく答えが見つかりませんでした。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは >まったく答えが見つかりませんでした。 ご苦労さまでした。 >画像をクリックして消すとします PictureBoxをクリックでいいですか? >別のページに移動後またform1に戻ってきた場合もう一度ロードするにはどうしたらいいでしょうか? VBはオブジェクト指向ですのでクラスを実体化して使用するというスタイルになります。 基本的にはform1もForm2も「Class Form1」「Class Form2」と書かれている通りクラスの扱いをします。 クラスの扱いですからForm2を実体化する場合は Dim f2 As New Form2→Newします。 また、 Form1に戻る時も Dim f1 As New Form1→Newします。 但し、使い終わったForm1があってもアクセスできませんので Form2を開く前にForm1を消去します。 簡単な方法がフォームの「疎遠結合」という方法を使います。 #シャットダウンモードの設定をします。 この部分は図解でここに記載してあります。(ページの中程) http://kagoturich.kakukaku-sikajika.com/ 「最後のフォームが閉じるとき」 に設定してください。 サンプルです。Form1にButtonとPictureBoxが貼り付けてあります。 Form2にButtonが貼り付けてあります。 Class Form1側 Public Class Form1 'Form1_Loadイベントハンドラー Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Shown Button1.Text = "Form2へ" 'PictureBox1に画像の表示 PictureBox1.Image = Image.FromFile("C:\test.jpg") 'ここは任意のパス End Sub 'Button1_Clickイベントハンドラー Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'Form2のインスタンス Dim f2 As New Form2 f2.Show() Me.Close() End Sub 'PictureBox1_Clickイベントハンドラー Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click 'PictureBox1の画像を消去 PictureBox1.Image = Nothing End Sub End Class Class Form2側 Public Class Form2 Private Sub f() Handles MyBase.Shown Button1.Text = "Form1へ" End Sub 'Button1_Clickイベントハンドラー Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'Form1のインスタンス Dim f1 As New Form1 f1.Show() Me.Close() End Sub End Class 上記のコードをコピペして実験してみてください。 また、Hideを使うと終了ができなくなってしまうこともありますので、注意が必要です。 

mimiru7
質問者

お礼

ありがとうございます。 無事ロードができるようになりました。 分かりやすく説明してくださってありがとうございました。

その他の回答 (1)

回答No.1

Windowアプリなら、 form2を表示するときに、form1をClose()しないでHide()にしておく。 form1に戻すときには、Form1をShow()する。

mimiru7
質問者

お礼

回答ありがとうございました。 このような感じでやってみたのですがうまくいきませんでした。 すみません。 form1  form2.Show()  Me.Hide() form2  form1.Show()  Me.Hide()

関連するQ&A