2017-05-24 5 views
-1

datagridviewデータソースをdatatableソースに設定しました。最後にnewrowがあるので、ユーザーはそれを記入することができます。しかし、私は1つの問題があります。たとえば、ユーザーが最初の列を入力してEnterをクリックすると、新しい行はもう新しい行ではなく、「次の」新しい行が追加されます。私が達成したいのは、ユーザーが新しい行に何かを書き始めたら、新しい行を作成する前にEnterキーを押して、新しい行の追加を取り消していなければ、すべての列が最初に満たされているかどうかをチェックします。それを達成する方法?DataGridViewがnewrowの後にnewrowを追加できないようにする

+1

[RowValidatingイベント?](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rowvalidating(V = VS。 110).aspx) – Pikoh

+1

'dataGridView1.AllowUserToAddRows = false;'を設定して、keypressのイベントを作成し、必要なものを検証し、すべてが 'dataGridView1.Rows.Add();'かどうかを確認するか、エラーメッセージを表示します – FortyTwo

+1

@Pikoh Okしかし、このイベントハンドラでは、すべての列のセルが満たされている場合は現在のニューローをチェックします。キャンセルしない場合はnewrowを作成し続けますか?例を見せてもらえますか? – DinoDinn

答えて

0

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

public void checkIfRowIsEmpty() 
{ 
    foreach (DataGridViewRow rw in this.dataGridView1.Rows) 
    { 
     for (int i = 0; i < rw.Cells.Count; i++) 
     { 
      if (rw.Cells[i].Value == null || rw.Cells[i].Value == DBNull.Value || String.IsNullOrWhiteSpace(rw.Cells[i].Value.ToString()) 
      { 
      dataGridView1.AllowUserToAddRows = false; 
      break; 
      } 
      else 
      { 
      dataGridView1.AllowUserToAddRows = true; 
      } 
     } 
    } 
} 

コールユーザが "入力" pushs Methodeの。ここ

は一例であり:

Enter key pressed event handler
+0

またはBegineEditを使用することができます –

関連する問題