2014-01-27 174 views
2

我想在選擇之後添加(或插入)行,但是首先我需要檢查我要添加的內容是否不重複,每當我輸入兩個相同的值時奇怪的結果,我用foreach現在for聲明,但沒有這些幫助過我:在插入datagridview之前防止重複

 private void plus() 
    { 
     for (int i = 0; i < dataGridView2.Rows.Count; i++) 
     { 
      if (textBox1.Text == dataGridView2.Rows[i].Cells[0].Value.ToString()) 
      { 
       MessageBox.Show("duple"); 
       break; 
      } 
      else 
      { 
       dataGridView2.Rows.Add(textBox1.Text.Trim(), pictureBox3.Image, pictureBox6.Image); 
       break; 
      } 
     } 
     textBox1.SelectAll(); 
     textBox1.Focus(); 
    } 

enter image description here

回答

3

你想插入每個迭代。 插入應該是在循環的末尾:

for (int i = 0; i < dataGridView2.Rows.Count; i++) 
{ 
    if (textBox1.Text == dataGridView2.Rows[i].Cells[0].Value.ToString()) 
    { 
     MessageBox.Show("duple"); 
     return; 
    } 
} 

dataGridView2.Rows.Add(textBox1.Text.Trim(), pictureBox3.Image, pictureBox6.Image); 
+0

好消息框彈出後,它仍然將它添加到DataGridView!如何防止 –

+0

替換'和'return' break'。 – dovid

+0

非常感謝您的回答,這真的幫助了我 –

0

問題在你的代碼是,如果文本不具有行文本會以網格中添加文本,而不搜索滿格匹配。還建議使用單元格名稱而不是單元格索引。

private void plus() 
    { 
     bool IsDuplicate = false; 
     for (int i = 0; i < dataGridView2.Rows.Count; i++) 
     { 
      if (textBox1.Text == dataGridView2.Rows[i].Cells[0].Value.ToString()) 
      { 
       IsDuplicate = true; 
       MessageBox.Show("duple"); 
       break; 
      } 
     } 
     if (!IsDuplicate) 
      dataGridView2.Rows.Add(textBox1.Text.Trim(), pictureBox3.Image, pictureBox6.Image); 

     textBox1.SelectAll(); 
     textBox1.Focus(); 
    }