我正在尝试验证我的datagridview。当我将一些数据添加到一行,如果我在另一行输入一些数据,那么它应该显示一条消息。 我正在尝试以下代码。抛出null异常错误。 由于特定单元格中的值为null。 它无法获取值。
private void dataGridViewBrandDetails_CellLeave(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0 && e.RowIndex > -1)
{
var dgv = sender as DataGridView;
for (int i = 0; i < dataGridViewBrandDetails.Rows.Count; i++)
{
string s = dgv[e.ColumnIndex, e.RowIndex].Value.ToString();
if (dataGridViewBrandDetails.Rows[i].Cells[0].Value != null && dataGridViewBrandDetails.Rows[e.RowIndex].Cells[0].Value.ToString() == dataGridViewBrandDetails.Rows[i].Cells[0].Value.ToString())
{
MessageBox.Show("The value already existed in DataGridView.");
}
}
}
}
答案 0 :(得分:0)
改变一些事情:
private void dataGridViewBrandDetails_CellLeave(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0 && e.RowIndex > -1)
{
var dgv = sender as DataGridView;
string s = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
for (int i = 0; i < dataGridViewBrandDetails.Rows.Count; i++)
{
if(i!=e.RowIndex) // To skip the row with newly inserted value
{
if (dataGridViewBrandDetails.Rows[i].Cells[0] != null && dataGridViewBrandDetails.Rows[i].Cells[0].Value.ToString() == s
{
MessageBox.Show("The value already existed in DataGridView.");
}
}
}
}
}
我保留了您的代码,但几乎没有任何更改。虽然您可能想要做的改动很少。 首先:如果第一行是标题行而不是具有值的行,则使i = 1。 第二:如果第0列的行包含控件,则应将它们转换为控件,然后读取它们的值。