• ベストアンサー

Form_LoadでDB接続ではなく、Form_Load完了でDB接続したい

VB.NETです。 現在、Form_LoadにDB接続のコードを記述していますが、Form_Load完了後に、DB接続の命令を実行することはできますでしょうか? つまり、Form_Loadが完了したら、DB接続のコードが実行されるようにしたいのです。 理由は、DB接続に時間がかかる場合、Form_Loadによる画面がなかなか出てこない。 また、DB接続エラーとなった場合、Form_Loadによる画面が出る前に、エラーメッセージがポップアップされてしまう。 これらを回避したいのです。 良い方法ご存知の方がいましたら、ご教授下さいませ。 よろしくお願い致します。

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

  • ベストアンサー
  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.2

こんにちは、じゃんぬねっと です。 Activate イベントは、TopMost にしていると、 FormLoad イベントより先に発生することがあり、お勧めできません。 フラグも必要になりますし。 > DB接続に時間がかかる場合、Form_Loadによる画面がなかなか出てこない。 非同期に実行しては如何でしょう? スレッドを使用するとか。 また、別の画面を表示しておく手もあります。

THUBAN
質問者

お礼

毎度のありがとうございます。 その後、スレッドで自己解決に至りました。 ちなみに、以下の感じで実現できました。 ------------------------------------- Public Thread As New System.Threading.Thread(AddressOf DB_Connection_ON) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load    ・    ・    ・  Thread.Start() End Sub Private Sub DB_Connection_ON()    ・    ・    ・  Thread.Abort() End Sub

その他の回答 (1)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

Form.Activatedイベント

THUBAN
質問者

補足

ご回答ありがとうございました。 以下のような感じで実現しますか? ちょっと組み込んでMsgBoxでテストしてみたのですが、何も動作しなかったようでした。 ------------------------------------------ Private Sub Form1_Activated(ByVal sender As Object, ByVal e As EventArgs)  RemoveHandler Form1.Activated, AddressOf Form1_Activated  MsgBox("動作しました") End Sub

関連するQ&A

専門家に質問してみよう