海外旅行から帰ってきたら、まず何を食べる?

以下のソースコードを Visual Basic で実行したら,

『InvalidOperationException はハンドルされませんでした。』

というエラーが出たのですが,エラーの意味がいまいちよく掴めなくて困っています.

Public Class Form1
   Dim tc As TestClass = New TestClass
   Class TestClass
      Sub New()
         Form1.ComboBox1.Items.Add("hello world")
      End Sub
   End Class
End Class

おそらく範囲外アクセスのようなことだとは思うのですが,Visual Basic 初心者なので対策がよくわかりません.
以下のソースコードは,起動(実行)した時にクラスのコンストラクタが呼び出されて,コンボボックスのリストに文字列を追加するというだけのものなのですが,それで先のエラーが返ってきてしまっています.
どのようにコードを書き換えればいいのでしょうか.
条件は『起動時』に文字列をリストに追加することです.

A 回答 (2件)

http://msdn.microsoft.com/ja-jp/library/system.i …
InvalidOperationException クラス
> オブジェクトの現在の状態に対して無効なメソッド呼び出しが行われた場合にスローされる例外。

Form1起動。
Form1起動中にForm1の既定のインスタンス参照。
まだ起動中(準備ができていない)なので参照できない。
終了。

既定のインスタンス参照も、別クラスでインスタンス操作も
悪い作法なので対策はノーコメント。
    • good
    • 0

なぜクラス内でクラスを定義してるんですか?

この回答への補足

すみません,書き間違えてました.
こうですね.

Public Class Form1
   Dim tc As TestClass = New TestClass
End Class
Class TestClass
   Sub New()
      Form1.ComboBox1.Items.Add("hello world")
   End Sub
End Class

補足日時:2011/12/20 00:49
    • good
    • 0

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