我试图检查一些关于此的类似帖子,但我找不到合适的解决方案,我有以下代码
if(dgvOC.Rows.Count == 0)
{
dgvOC.Rows.Add(txtProd.Text, numCant.Value, txtTipo.Text, precioGuardado, precioGuardado * (int)numCant.Value);
}
for (int i = 0; i <= dgvOC.Rows.Count; i++)
{
if (txtProd.Text == dgvOC.Rows[i].Cells[0].Value.ToString())
{
MessageBox.Show("Usted ya ha agregado un producto con el mismo nombre" +
", modifique la cantidad o borre el producto para agregarlo" +
" de nuevo.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
txtProd.Clear();
txtTipo.Clear();
numCant.Value = 0;
return;
}
dgvOC.Rows.Add(txtProd.Text, numCant.Value, txtTipo.Text, precioGuardado, precioGuardado * (int)numCant.Value);
}
首先如果是在开始时我不需要将它与任何东西进行比较,因为没有什么可以比较它所以我只是添加它(我的DGV将“AddingRows”属性设置为false)
我使用for来运行所有的DGV,然后是第二个如果我想要做的是将文本框与DGV中的每一行进行比较,如果它与MessageBox匹配则会弹出说你'我添加了一个具有相同名称的产品,然后它清除了一些TextBoxes和一个numericupdown,然后它返回,如果它与行添加不匹配
...我的问题是,使用此代码第一次插入DGV工作正常,但在第二次显示警告(即使我添加一个与产品不匹配的名称)和第三次一个在空白处添加一行
感谢您的帮助
答案 0 :(得分:0)
尝试这样的事情 创建一个方法来验证datagridview的内容以及是否有行。
// Call this in your event.
If(NoRowOrNoDuplicate())
{
dgvOC.Rows.Add(txtProd.Text, numCant.Value, txtTipo.Text, precioGuardado, precioGuardado * (int)numCant.Value);
}
//The method be like
private bool NoRowOrNoDuplicate()
{
// Add condition s here
for (int i = 0; i <= dgvOC.Rows.Count; i++)
{
if (txtProd.Text == dgvOC.Rows[i].Cells[0].Value.ToString())
{
MessageBox.Show("Usted ya ha agregado un producto con el mismo nombre" +
", modifique la cantidad o borre el producto para agregarlo" +
" de nuevo.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
txtProd.Clear();
txtTipo.Clear();
numCant.Value = 0;
return false;
}
}
Return true;
}