10代と話して驚いたこと

仕様・環境
WindowsXP Professional
VisualStudio 2005
VB.NET(.NET Framework 2.0)

アプリケーション起動時、最初のフォームロード中にデータの読込みなどを行っており、読込みエラーが起きた場合などを想定しています。
LoadイベントではCloseメソッドの呼び出しは行ってはいけないため、どのような処理にするのがベストなのかを知りたいです。

ひとつの解決策としてアプリケーションフレームワークを無効にし、Sub Mainからスタートする方式にして、
フォームを開く前にデータの読込み判定などを行えば問題は解決できるのですが、
アプリケーションフレームワークの機能を使っているため、設定を無効にすることが出来ません。
アプリケーションフレームワークを有効にした場合は、スタートアップフォームの選択肢に独自のMainが選択できません。

以下のどちらかが解決できればよいのですが、よろしくお願いします。
・アプリケーションフレームワークを有効にした状態で最初に呼び出されたフォームにエラーが発生した場合にフォームを閉じる方法はあるのか?
・アプリケーションフレームワークを無効にした状態でアプリケーションフレームワークが提供する機能と同じものを実装する方法はあるのか?

2番目については独自で実装すればいくらでも可能だとは思いますが、
簡単に(例えばフレームワークをONにする程度の労力)実装する方法があるのかということです。

以上ですが、よろしくお願いします。

A 回答 (1件)

フォームのNewメソッドをオーバライドしてこの中で判定を行ってShownイベントなどでフォームを閉じるようにしてはいかがでしょう



フォームクラスに判定用の変数を準備

dim bflag as Boolean = false

Sub New()
  ' 自動生成のコード
  InitializeComponent()
  ' 独自の判定処理
  bFlag = True
End Sub

' 引数省略
Private Sub Form1_Shown( ... ) Handles MyBase.Shown
  if bFlag = true then
    MsgBox "起動時にエラーがありました"
    Me.Close()
  end if
End Sub
といった具合で ...
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。
FormにShownというイベントがあるということに気づいていませんでした。

一度フォームが表示されてしまいますが、その時点でShownイベントが発生するのでそこでフォームをクローズするといった処理を実装することが出来ました。

Shwonイベントのヘルプを調べてみたところ、.NET Framework 2.0から追加されたイベントだったのですね。
はじめてフォームが表示された時のみ発生するイベントということで、今回の件以外でもいろいろと利用できそうです。

お礼日時:2009/03/05 18:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A