2012-04-06 23 views
0

私はwinformsアプリケーションでデータグリッドを持っています。ユーザーがデータグリッド上のセルをダブルクリックすると、次のメソッドが呼び出されます。コンボボックスコントロールのテキスト値に投稿変数を投稿する

private void dataCaseDiary_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
    { 
     try 
     { 
      int cellRow = e.RowIndex; 
      int cellCol = e.ColumnIndex; 
      DataTable table = (DataTable)dataCaseDiary.DataSource; 
      var currentDiaryID = table.Rows[cellRow]["DiaryID"]; 
      var currentUser = table.Rows[cellRow]["To Action"]; 
      var currentType = table.Rows[cellRow]["Diary Type"]; 
      txtDiaryID.Text = currentDiaryID.ToString(); 
      cboReassign.Text = currentUser.ToString(); 
      cboAmendDiaryType.Text = currentType.ToString(); 
     } 
     catch (Exception eX) 
     { 
      MessageBox.Show(eX.Message); 
     } 
    } 

しかし例外がライン

cboAmendDiaryType.Text = currentType.ToString(); 

で発生する例外は、「オブジェクト参照がオブジェクトのインスタンスに設定されていない」と述べています。

私はこれを見てしばらく時間を費やしてしまい、私が間違っていたことを見つけることができません。 3つのvar変数はすべてデータグリッドから正しい値を取得し、2つはフォーム上のコントロールのテキスト値にポストしますが、3つ目は失敗します。

「txt」はテキストボックスコントロールを意味し、「cbo」はコンボボックスを意味します。

+0

"Diary Type"という名前の列はありますか? 「DiaryType」が必要なのでしょうか? – Reniuz

+0

私はそれも考えていましたが、「3つのvar変数はすべてデータグリッドから正しい値を取得します」 OP:実際に満たされていることを確認しましたか? – Botonomous

+0

cboAmendDiaryTypeを項目のリストにない値に設定しようとしていますか? – Justin

答えて

0

問題は、table.Rows[cellRow]["Diary Type"]が存在せず、nullを返すことです。私は "日記タイプ"が正しい列名ではないと思います。

+0

私はステップスルー時に "var currentType"が値を持っているからではありません。 – PJW