1

我在 Windows 窗体中有一个 DataGridView,它有 2 列,最后一列将包含数据包的名称,关键是这个名称永远不必重复。

我尝试使用 CellValidating 事件使用此代码

        string value = Convert.ToString(dgvTiendas.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
        int cellIndex = e.RowIndex;

    if(cellIndex == 1)
    {
            foreach (DataGridViewRow rw in dgvTiendas.Rows)
            {
                if (cellIndex == rw.Index)
                {
                    return;
                }
                else
                {
                    string valorRow = Convert.ToString(rw.Cells["ContenedorCodigoBarras"].Value);
                    if (value == valorRow)
                    {
                        MessageBox.Show("The container is already used");
                        dgvTiendas.Rows[e.RowIndex].ErrorText = "Contenedor ya utilizado";
                        e.Cancel = true;
                    }
                    else
                    {
                        e.Cancel = false;
                    }
                }
            }
    }

当我运行应用程序并编写容器的名称时,它已被验证,但似乎验证了当前单元格,因为“错误文本”出现在 RowHeader 上。

请帮助我有几个星期的时间。

4

1 回答 1

0

您遇到此问题是因为您正在使用此代码设置行的错误文本。

dgvTiendas.Rows[e.RowIndex].ErrorText = "Contenedor ya utilizado";

您需要设置单元格的错误文本

dgvTiendas[e.ColumnIndex, e.RowIndex].ErrorText = "an error occured";
于 2013-10-01T20:16:25.337 回答