2012-04-17 3 views
0

は、私が取得:Visual C#combox1.Items.Add( "test");エラー?私はコンボボックスに項目を追加しようとすると

「とNullReferenceExceptionが未処理だった」「オブジェクトのインスタンスに設定されていないオブジェクト参照。」

これは、コンボボックスに追加するコードをどのように行っても発生します。

comboBox1.Items.Add("test"); 

または

try 
{ 
    Parties.Open(); 
    String test = "SELECT PartyName FROM Parties WHERE PartyID = 4"; 
    selectParty = new OleDbCommand(test, Parties); 
    OleDbDataReader testing = selectParty.ExecuteReader(); 
    while (testing.Read()) 
    { 
     MessageBox.Show(testing.GetValue(0).ToString()); 
     comboBox1.SelectedIndex = comboBox1.Items.Add(testing.GetValue(0).ToString()); 
    } 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
    return; 
} 

(汚いコード上で...欲求不満!)

私は、.NETやC#にはかなり新しいだと私はここで何が起こっているか理解していません、私が行っているすべてのところで、上記のコードはうまくいくはずですが、そうではありません。 MSDNは単にリストを表示します:

comboBox1.Items.Add("Text"); 
+1

ここで、comboBox1を宣言して作成しましたか? – Jason

+0

これでデバッグすると、どのオブジェクトが 'null'ですか?そのオブジェクトはどこで初期化されると思いますか?また、 'catch'ブロックに貴重な情報を投げ捨てていることにも注意してください。メッセージは表示されますが、スタックトレースは無視されます。スタックトレースは、例外をスローしたコード行を示します。 (私はこの特定のケースでは1つもないと考えていますが、内部例外は無視されます)。 – David

+0

@Jason formName.Designer.cs 'private System.Windows.Forms.ComboBox comboBox1; – mawburn

答えて

3

ここで、ComboBoxにアイテムを追加しようとしていますか?

InitializeComponent()の前に上記のコードを呼び出すと例外がスローされます。フォームコンストラクタでまたは、コードの他の場所でコンボボックスを割り当てている場合。

InitializeComponent()の後にすべてのコードが完了していることを確認してください。これはデザイナーのコードを呼び出すメソッドです。

0

ビジュアルスタジオでは、デザイナを使用してUIを変更するときにInitializeComponents()メソッドが追加されます。

フォームコンストラクタ本体でInitializeComponents()メソッドを呼び出す必要があります。コードがコントロールと相互作用する場合は、InitializeComponent呼び出しの後にコードを配置する必要があります。コントロールとやりとりしないコードは、InitializeComponents()の上または下で問題ありません。

また、ビジュアルスタジオでコントロールをダブルクリックすると、フォームコンストラクタの後に実行されるForm_Loadイベントハンドラが作成されます。

+0

時にはFormLoad()も早すぎるようです。私はShown()イベントがうまくいったが、Load()イベントはうまくいかなかった場合があった。 –

関連する問題