2017-11-16 22 views
-2

でなければならない、私は私の勝利の形でのDataGridViewを持って、私は削除のすべてが正常に動作しますが、私は列のヘッダーをクリックしたときに実行するために選択されたからチケット番号の値を取得するには、セルをクリックしてイベントを使用しています: enter image description hereDataGridViewインデックスが範囲外でした。非負

は、私はこのエラーに

System.ArgumentOutOfRangeExceptionが出ます:「インデックスが範囲外でした。負でなく、コレクションのサイズより小さくなければなりません。 パラメータ名:インデックス」 [2]

セルをクリックしてイベントであるため、私はこのエラーを取得[[ここに画像の説明を入力します] [2]!]:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 
    { 
     int indexRow = e.RowIndex; 
     DataGridViewRow row = dataGridView1.Rows[indexRow]; //Debugger shows error here 
     txtDelete.Text = row.Cells[0].Value.ToString(); 
    } 

ので、私はで助けを必要とこの小さなバグを修正/修正する。私は、セルのクリックイベントでは、選択したセル

+0

デバッガはそのエラーで停止...値とは何ですか'indexRow'のですか? 'dataGridView1.Rows'にはいくつの要素がありますか? – David

+0

RowIndexが0より小さいかどうかをチェックして処理を中止します – Shcherban

+0

列ヘッダーの行インデックスが-1で、 'datagridView1.Rows [-1]'が無効です。単に 'e.RowIndex <0'がチェックされてから戻ることができます。 –

答えて

0

のrowIndexプロパティを使用しています iはなっていたindexRow = -1だから私はにコードを変更:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 
    { 
     int indexRow = e.RowIndex; 
     if (indexRow>=0) 
     { 
      DataGridViewRow row = dataGridView1.Rows[indexRow]; 
      txtDelete.Text = row.Cells[0].Value.ToString(); 
     } 

    } 
関連する問題