2011-02-22 7 views
2

私はデータベースから取得した一連のケースを持つリストボックスを持っています。私が新しいケースを作成すると、データベースのケーステーブルの実際の状態を反映するためにリストボックスを更新することはできません。しかし、私はこの行のイベントハンドラからNullReferenceExceptionを取得します:populateBoxes((int)lb.SelectedValue)私はそれを更新しようとします。selectedIndexChangeイベントをlistBoxから削除して、その中のデータを更新する必要がありますか?

これは、リストボックスの私のイベントハンドラです、私はデータソースを設定するVSE2008のビルトイン機能を使用しました

displaymemberと:

private void lbCases_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      ListBox lb = (ListBox)sender; 

      populateBoxes((int)lb.SelectedValue); 
     } 

更新イベントリストボックスのvaluemember。

+0

何をpopulateBoxesで発生しますか? –

答えて

1

あなたはデータソースが設定されている場合lbCases_SelectedIndexChanged火災やイベントを無視しないかということを確認する必要があります。

イベントを無視するか、またはインデックスを-1に設定するための「読み込み」ブール値を作成し、例外を防ぐために-1インデックス値のチェックをlbCases_SelectedIndexChangedに追加します。あなたが選択した値で終わるしたい場合も、あなたはあなたが呼び出した後、それを選択する必要があります

if (lb.SelectedValue != null) 
{ 
    populateBoxes((int)lb.SelectedValue); 
} 

を実行する前に

+0

読み込みブール値が処理されました。ありがとう。 – Bildsoe

0

選択されたインデックスを-1に設定し、リストボックスを上に配置します。

+0

私はこれを試しましたが、私は同じ例外を取得します。 – Bildsoe

0

私が提案する、あなたはそのイベントハンドラでチェックを行います。

private void lbCases_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     ListBox lb = sender as ListBox; 
     if(lb == null) 
      return; 

     populateBoxes((int)lb.SelectedValue); 
    } 
+0

@Daniel - 明らかにリストボックスはnullではありません。なぜなら、私はまだ同じ例外が発生するからです。 – Bildsoe

+0

例外の正確なスタックトレースとは何ですか? –

+0

\t caseHandler.exe!caseHandler.caseControl.lbCases_SelectedIndexChanged(オブジェクト送信者= {SelectedItem = ""}、System.EventArgs e = {System.EventArgs})行93 \t C# – Bildsoe

0

はnullをSelectedValueのを確認してください:

this.casesTableAdapter.Fill(this.caseDB.cases); 
関連する問題