Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > datagridview проверка ввода


Автор: igluk 5.5.2011, 01:04
Мне нужно после изменения ячейки, проверить, заполнили её или нет, и если заполнили, то какое значение, при желании сравнить, а главное, если что не так, сказать об этом пользователю и вернуть ячейку в режим редактирования обратно. Делаю это так:

Код

        private void dataGridViewFakultys_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            dataGridViewFakultys.CurrentCell.Selected = false;
            dataGridViewFakultys.CurrentCell = dataGridViewFakultys.Rows[e.RowIndex].Cells[e.ColumnIndex];
            if (e != null)
            {
                if ((dataGridViewFakultys.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null) || (dataGridViewFakultys.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == ""))
                {
                    dataGridViewFakultys.BeginEdit(true);
                }
                else
                {
                 //ещё какие-то проверки
                 }
            }
        }


Но при этом, например если мы находимся в режиме редактирования, делаем заведомо неправильное значения ячейки и после этого тыкаем в другую ячейку, то значение в той, которую тыкнули исчезает или происходит ещё какая-нибудь нездравая хрень. Не знаю, как сделать.
Пробовал событие cellendedit, там тоже с багами получается: при вызове метода BeginEdit(true) ячейка в режим редактирования не возвращаеся по непонятным мне причинам.

Подскажите, как реализовать описанное выше, в сабже.

Автор: -Mikle- 5.5.2011, 06:43
Уже не помню как тут надо, но попробуй в событии Validating.
Код

private void dataGridView1_Validating(object sender, CancelEventArgs e)
{
    // e.Cancel = true; чтобы отменить
}


BeginEdit, по идее, не надо тут вызывать, достаточно отменить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)