2016-06-13 7 views
0
|Column 1|Column 2| 
|1  |1  | 
|2  |2  | 
|3  |3  | 
|4  |4  | 
|5  |5  | 
|6  |6  | 
|7  |7  | 
|8  |8  | 
|9  |9  | 
|  |  | 

私はこれを私のdatagridviewで表示していますが、今は新しい行(行10)を追加しています。私は後でそのデータを使用する前にユーザーが任意の列を空にしているかどうかをチェックしています。ユーザーが列1に何かを挿入し、列2を空にして空白にしてメッセージを表示すると "列2は空にできません"私は彼の選択(currentrow)がその空のセルになるようにして、私の問題は新しい行にインデックスがないことです(それはありますが、私が使用すると、maxを超えるインデックスを使用できないというエラー行)。どのように私はそれを解決することができます。ここでdatagridview新しい行のインデックス

は私が

  int nRows = dataGridView1.Rows.Count; 
      int currColumn = dataGridView1.CurrentCell.ColumnIndex; 
      int currRow = dataGridView1.CurrentCell.RowIndex; 
      string id = dataGridView1.Rows[currRow].Cells[0].Value.ToString(); 
      string opis = dataGridView1.Rows[currRow].Cells[1].Value.ToString(); 

      if (string.IsNullOrEmpty(id)) 
      { 
       MessageBox.Show("Polje broj ne moze biti prazno!"); 
       dataGridView1.CurrentCell = dataGridView1[0, nRows]; 
      } 
      else if (string.IsNullOrEmpty(opis)) 
      { 
       MessageBox.Show("Polje opis ne moze biti prazno!"); 
       dataGridView1.CurrentCell = dataGridView1[1, nRows]; 
      } 
+0

RowsAddedイベントに加入することができることを確認していたコードの一部であり、 。 –

+0

投稿にコードを追加しました – DoLoop

答えて

0

一つのオプションは、あなたが記述するコードを投稿するならば、それは参考になるDataGridView

dataGridView.RowsAdded += dataGridView1_RowsAdded 


private void dataGridView1_RowsAdded(object sender, 
    DataGridViewRowsAddedEventArgs e) 
{ 
    // validation code. 
    e.RowIndex; // newly added row index. 
} 
+0

cellValueChangedでrows.countのインデックスを取得できますが、currentCellで使用しようとすると インデックスが範囲外でした。負でなく、コレクションのサイズより小さくなければなりません。 – DoLoop

+0

'rows.Count'はカウントを返しますが、必要なのは新しく追加された行です。ここで間違っていますか? –

+0

Hmm私は注意を払っていませんでしたが、今私はrowindexでインデックスを取得するとき、私は同じ取得するが、それは問題ではありません。問題は私がインデックス10を取得する場合、私は[1、10](それは列2)ですが、何らかの理由で1、9(最後の行ではなく、新たに1つ)に設定します – DoLoop

関連する問題