2017-05-26 15 views
0

DataGridViewのslected列値エラーDataGridViewの選択した列の値がエラー(勝つフォーム)

私は例外「インデックスが範囲外である。これは、コレクションのサイズよりも非マイナスと小さくなければなりませんを持っている。 パラメータ名前:インデックス "。

"gridview.datasouce"(データベースから日付を取得)で設定されたすべての列を使用すると、コードは問題なく動作します。 (選択列なし)

「選択」列を追加した後にのみ例外が発生します。

選択したセルの値を取得しようとすると例外が表示されます。

データテーブル: | ID |名前|数量|価格|

コードを次のように

//をグリッド

private void fillData() 
    { 
     try 
     { 
      DataGridViewCheckBoxColumn select = new DataGridViewCheckBoxColumn(); 
      select.DataPropertyName = "select"; 
      select.Name = "select"; 
      select.HeaderText = "Select"; 
      select.TrueValue = "1"; 
      select.FalseValue = "0"; 
      grd_selectStockEntry.Columns.Add(select); 

      DataGridViewButtonColumn col = new DataGridViewButtonColumn(); 
      col.DataPropertyName = "Id"; 
      col.Name = "Id"; 
      col.HeaderText = "Id"; 
      grd_selectStockEntry.Columns.Add(col); 

      grd_selectStockEntry.DataSource = //get data table from DB   

     } 
     catch (Exception ex) 
     { 
      //ex handler 
     } 
    } 

//グリッドセルのコンテンツを作成

private void grd_Entry_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
     var senderGrid = (DataGridView)sender; 

     try 
     { 
      if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0) 
      { 
       Id = senderGrid.SelectedCells[e.ColumnIndex].Value.ToString(); //exception occurs in this line 

      } 
     } 
     catch (Exception ex) 
     { 
      //ex handler 
     } 
    } 

答えて

0

をクリックして、私はそれを考え出しました。

selectedCellsのインデックスに何か問題がありました。

は、次の行を変更し、コードが細かい

Id = senderGrid.SelectedCells[e.ColumnIndex - 1].Value.ToString(); 

コーディングスタイルが良いか悪いかどうかを知りません。

関連する問題