2016-03-31 13 views
-1

テキストボックスボックスでクリックされたデータグリッド値を表示しようとしています。しかし今、この例外を取得イム:datagrid_cellclickイベントのテキストボックスにデータグリッド値を表示する際にエラーが発生しました

Object reference not set to an instance of an object. 

私のコードはこれです...

if (e.RowIndex >= 0) 
{ 
    DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex]; 
    comboBox2.Text = row.Cells[4].Value.ToString(); 
    txtID.Text = row.Cells[0].Value.ToString(); 
    txtName.Text = row.Cells[1].Value.ToString(); 
    txtAddress.Text = row.Cells[2].Value.ToString(); 
    //txtPhone.Text = row.Cells[3].Value.ToString();   
    txtBalance.Text = row.Cells[5].Value.ToString(); 
} 
+1

は(ヌル)空のセルのいずれかのですか? –

+0

いいえ、私はフィールドの長いテキストデータ型にint値を挿入します。これが原因なの? –

答えて

2

この問題は、DataGridViewRowオブジェクトがインスタンス化されないためです。 dataGridView1オブジェクトにアクセスできない可能性があります。 接頭辞thisを使用すると、あなたのdataGridView1オブジェクトが、イベントが置かれているクラスと同じクラスに存在することがわかります。これはおそらくそうではありません。 参考:https://msdn.microsoft.com/en-us/library/dk1507sz.aspx

がそうのように、キーワードthisを削除してください:

DataGridViewRow row = dataGridView1.Rows[e.RowIndex]; 
1

をあなたはこのような何か試すことができます。

if (e.RowIndex >= 0) 
{ 
    txtID.Text = dataGridView1[0, e.RowIndex].Value.ToString(); 
    txtPhone.Text = dataGridView1[1, e.RowIndex].Value.ToString();  
} 

か、セルを得ることができますが値は列名で次のようになります。

if (e.RowIndex >= 0) 
{ 
    txtID.Text = dataGridView1["Id", e.RowIndex].Value.ToString(); 
    txtPhone.Text = dataGridView1["Phone", e.RowIndex].Value.ToString();  
} 
+0

このコードを実行しました。 if(e.RowIndex> = 0) { txtPhone.Text = dataGridView1 [e.ColumnIndex、e.RowIndex] .Value.ToString(); txtID.Text = dataGridView1 [e.ColumnIndex、e.RowIndex] .Value.ToString(); } しかし、両方のテキストボックスに選択したセルの値が表示されます。私はセルを選択したい。行全体のデータがテキストボックスに表示されます。 –

+1

あなたはすべての列名を持っていましたか? – SeM

+1

私は答えを更新しました、これを試してください。ありがとうSeM。 – SeM

関連する問題