0

コンボ ボックスに項目を追加しようとすると、次のようになります。

「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");
4

2 に答える 2

3

ComboBox に項目を追加しようとしている場所はどこですか?

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

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

于 2012-04-17T01:59:48.177 に答える
0

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

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

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

于 2012-04-17T02:04:27.087 に答える