Используйте CellValidiating
событие, чтобы проверить значение столбца.
Что-то вроде этого:
const int MandatoryColumnIndex = 1;
public Form1()
{
InitializeComponent();
dataGridView1.CellValidating += new DataGridViewCellValidatingEventHandler(dataGridView1_CellValidating);
dataGridView1.RowValidating += new DataGridViewCellCancelEventHandler(dataGridView1_RowValidating);
}
private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
if (dataGridView1.Rows[e.RowIndex].Cells[MandatoryColumnIndex].FormattedValue.ToString() == string.Empty)
{
e.Cancel = true;
dataGridView1.Rows[e.RowIndex].Cells[MandatoryColumnIndex].ErrorText = "Mandatory";
}
else
{
dataGridView1.Rows[e.RowIndex].Cells[MandatoryColumnIndex].ErrorText = string.Empty;
}
}
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex == MandatoryColumnIndex)
{
if (e.FormattedValue.ToString() == string.Empty)
{
dataGridView1[e.ColumnIndex, e.RowIndex].ErrorText = "Mandatory";
e.Cancel = true;
}
else
{
dataGridView1[e.ColumnIndex, e.RowIndex].ErrorText = string.Empty;
}
}
}
Пытаюсь свой кусок кода, но есть что-то не так: если я изменить обязательную ячейку она работает, но если я только заполнить другие клетки, оставляя обязательным пустым , Я могу добавить все строки, которые я хочу. Это не хорошо – davioooh
Вы можете использовать 'RowValidating' событие тоже. Я изменил код, чтобы показать пример. – Dave
Отлично! Оно работает! Спасибо! (Я решил использовать только событие «RowValidating») – davioooh