VB2008でのフォームのLoadイベントの発生方法は?

このQ&Aのポイント
  • VB2008でも「フォームのLoadイベントのみを発生させる方法」は存在するのでしょうか?
  • VB6時代では「Load フォーム名」で可能だったが、VB2008ではフォームを表示せずにLoadイベントを発生させる方法を知りたい。
  • VB2008ではフォームが表示されない状態でLoadイベントを発生させるスリムな方法はあるか?
回答を見る
  • ベストアンサー

ふと疑問に思ったこと。

現在VB2008をのんびり勉強中のものです。 ふと疑問に思ったのですが、VB6時代では Load フォーム名 で、対象フォームのLoadイベントのみを発生させることができました。 これだと、見た目上フォームを表示せずにLoadイベントを発生させることができました。 同様のことをVB2008でもやってみようと思ったのですが、 フォーム名 = New Form で初期化。 Loadだけを読み込もう・・・・あれ?フォーム先のイベントを何か発生させないとLoadされないぞ!? っていうことに気付きました。 フォーム名.showだとフォームが表示されてしまうし・・・ とりあえずshowで表示させた後、すぐにhideで隠してしまえばいいのですが、もっとスリムなやり方はありますでしょうか???

  • tyosu
  • お礼率29% (7/24)

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

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

Form の Load イベントでなく、Public Sub New() を使用するとよいと思います。 ちなみに、コードウィンドウの上にある左側のコンボボックスで (Form イベント) ではなく、その一つ上の Form を選択し、その右のコンボボックスで New を選択すると自動的に Public Sub New() が作成されます。

tyosu
質問者

お礼

回答ありがとうございます。 確かにこれだとVB6のLoadイベントと同じような動作を行うことを確認しました。 インスタンス生成時に呼び出されるプロシージャなので、Closeで閉じた後に再度呼び出したときにどのような動作をするのかなどいろいろ試していこうと思います。

その他の回答 (1)

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.1

こんばんは >showで表示させた後、すぐにhideで隠してしまえばいいのですが 詳細は分かりませんし、VB6とOffice2003のVBAまでしか扱ったことがないのでVB2008がどういう動きをするのか分かりません。 ただ、一つ言えるのは、フォームは何かを表示させたいから使います。 何も表示しなくていいのなら、フォームは要りません。 VB6では起動時に何かを表示させなくてもいいのならば、「標準モジュール」に「Sub Main」を作っておいて、「プロジェクト→○○(vbpのファイル名)のプロパティ」で「スタートアップの設定」で「Sub Main」を指定すればOKです。 p(^^)q

tyosu
質問者

お礼

回答ありがとうございます。 VB.NETでは基本的に指定したフォームからロードを開始します (※Sub Mainが使用できないわけではないのですが、フォームのスタイルが崩れたり、予期しない動作をすることがあるそうです) 今回はフォーム上でなにかしらの視覚的表示処理を行いたかったわけではなく、各ページにおけるオブジェクトの生成と固定テキストのセットなどを行おうかなと思ったのです。

関連するQ&A

  • VB.Netのフォームロードイベントについて

    こんにちわ。 いまVB.Net2005Expressで勉強をしている者です。 あるフォームがロードされるときの処理を書こうとすると, 従来のVB6ではFormオブジェクトにLoadイベントがありましたが, VB.Net2005では,最初の状態ではフォームのイベントには 「New」,「Finalize」,「InitializeComponent」の3つしかありません。 もしVB.Net2005でForm_Loadイベントを書きたいときは, 自分で, 「Private Sub Form1_Load(Byval ~」と書かなくてはいけないのでしょうか? 初歩的な質問になるかもしれませんが,教えてください。 よろしくお願いします。

  • Hideについて(.NET)

    Form1をHideで非表示にし、Form2を開いた後、再びForm1を表示したいのですがうまくいきません。 [form1のイベント] Dim frmForm2 as New Form2 frmForm2.Show Me.hide Sub End [form2のイベント] Dim frmForm1 as New Form1 frmForm1.Show Me.Close Sub End としてあります。 非表示されたフォームを再表示されずに、新しくフォームが開いてしまっていると考えられるんですが、どうしたらよいでしょうか? 

  • VB.NETでフォーム間でのコントロールの参照

    VB.NETでフォーム間でのコントロールの参照が うまくいかず困っています Windows フォーム Form1とForm2があります Form1にはリストビュー(name:ListView1)を配置しています Form1_LoadイベントでListView1にアイテムを追加します Form2を表示し、Form1のListView1のアイテム数を、 取得しようとすると 0 になってしまします どうすればForm2から取得できるのでしょうか? 次のように書いています Form1_Load イベント内 ListView1.Items.Add("Item1") ListView1.Items.Add("Item2") ListView1.Items.Add("Item3") MessageBox.Show(CStr(ListView1.Items.Count), "Form1") Dim Form2 As New Form2() Form2.Show() Form2_Load イベント内 Dim Form1 As New Form1() MessageBox.Show(CStr(Form1.ListView1.Items.Count), "Form2")

  • VB2005で、フォームを初期化したいのですが、教えてください。

    VB2005で、フォームを初期化したいのですが、教えてください。 VB2005で、フォームにデータベース内容(ORACLE)を表示するプログラムを作っています。その際、F8キーを押すと画面内容(テキストボックスやDatagridviewの編集内容)を初期ロード状態に戻すようにしたいと思い、F8キー押下時のイベントに、以下のようにプログラムしました。 dim frm as form frm = new form1 me.close frm.show() としてみましたが、me.closeで、プログラムが終了してしまうようです。 どうするのが適切かお教えください。

  • フォームロードについて

    VB2008で、Form_Load()に Me.Visible = falseや Me.Close()としてもフォームの非表示やフォームを閉じたりしないのですが、なぜなのでしょうか? 最初に起動した場合に、Form_Loadで初期設定を行った後に、自動的に直ぐにフォームを非表示や閉じることをしたいです。

  • フォームを画面のど真ん中に表示させたいのですが

    フォームを画面のど真ん中に表示させたいのですが、 http://dobon.net/vb/dotnet/form/startposition.html を見たのですがコードの書き方がよくわかりません。 Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim f As New Form1() 'フォームを画面の真ん中に表示する f.StartPosition = FormStartPosition.CenterScreenf.Show() End Sub End Class こうすると、「FormStartPosition.CenterScreenf」の部分に波線がひかれます。 Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.StartPosition = FormStartPosition.Manual Me.Location = New Point(0, 0) End Sub End Class これで左は時に表示する事は出来るのですが、真ん中に表示させるにはどうすればいいでしょうか?

  • Form1.vbをイベントなしで動作させるには?

    VB2005初心者で困っています。 Menu.vbとForm1.vb, Form2vb, Form3.vb・・・を作り、Menu.vbのButton1_ClickでForm1.Show()としてForm1.vbに移行し、次にForm1のButton1_clickイベントでExcelからDataを読み込んでGraphを書かせています。(この時は問題なく動作しています) これを、Form1に移行したらすぐにGraphを表示しようとして、Form1.vbの Public Class Form1 Private Sub Button_Clic(Byval sender As System・・・・・)Handles Button1.click   Dim g As Graphics   ・・・・ を変更して、  Private Sub Form1_Load(Byval sender As System・・・・)Handles MyBase.load Me.Show() Dim g As Graphics   ・・・・ と、しましたが、一瞬Graphは表示しますが、すぐに消えます。 また、罫線はまったく表示しません。 Button_ClickイベントなしでForm1を動かすにはどうすればよいのでしょうか?

  • フォームロード時にアンロード。

    VBでフォームロード時に、ある条件のときだけ、 自フォームをアンロードするプログラムを作りたいのですが、 form_load プロシージャにunload Me と書くと、 どうしても、一瞬フォームが表示されます。 フォームを表示せずにアンロードする方法は ないのでしょうか? よろしくお願いします。

  • フォームが表示されるのが遅い

    お世話になっております。 最初にForm1_Loadイベントでiniファイルで初期設定をロードしたり、複数のCSVファイルからデータを読み込んでFor~Nextで配列に入れたりする処理をしているのですが、データ多いためフォームが表示されるまでに2秒ほど待たされてしまいます。 フォームを表示してから行いうにはどうしたらいいでしょうか。Application.DoEvent()をループ内に記述してみたりしましたが、効果は見られませんでした。初期設定をLoadではなく、ほかのイベントに記述するしかないでしょうか? タイマーで時間をずらしたりなどで出来ないことは無いかもしれませんが、無駄も多くなりそうなので一番一般的な方法を知りたいです。 よろしくお願いいたします。

  • (VB2008)ShowDialogしたFormを閉じた時の、画面の挙

    (VB2008)ShowDialogしたFormを閉じた時の、画面の挙動について (VB2008EE、OSはVista) Form1からForm2を(ボタンのクリックイベントで) Dim f As New Form2 f.Show(Me) と記述して表示させたあと、 Form2の(ボタンのクリックイベントで) Me.Hide() として、Form2を閉じる記述を書きました。 で、Form2をShowDialogしてから、Hideを実行すると、 Form2が消えるのはいいのですが、残るForm1が、 ・デバッグ実行時は、VB2008EEのWindowの後ろに隠れてしまい、そのままとなる。 ・リリースビルドでは、さすがにそのままとはなりませんが、一旦Form1が  ちらつきます。 この回避策がありましたら教えてください。 。。。 ここからは、いろいろ実験した結果です。 ・試しに、Me.Hide()の後ろに、Threading.Thread.Sleep(5000)を 記述して実行すると5秒間Form1が後ろのアプリ画面に隠れた後、 Form1が前に表示される。 ・この場合の「後ろの別アプリのWindow」について、その別アプリが VB2008やエクスプローラだとForm2がそのアプリに隠れるのですが、 ExcelやIEだと、Form1が後ろに隠れることがないようです。。。 ・Hideではなく、Closeだと、後ろには隠れません。 (ただし、Closeの場合、Threading.Thread.Sleep(5000)の間はForm2は その前にClose()があっても、表示されたままSleepしその後閉じます) ・さらにShowDialog()でなく、Show()の場合、Owner指定して実行した場合は、 (つまりSHow(Me))全く問題なく、Form1が前面に表示されたまま 他のアプリが前に来ることはないのですが、 Ownerを指定せずにShowしたところ、ShowDialogと同様のことが起きるようです。 もし、これらの現象全体についてしっかりと説明できる方がいらっしゃれば、 説明もしていただけるとうれしいです。

専門家に質問してみよう