Когда данные вводятся в ячейку DataGridView, могу ли я изменить их запись перед проверкой ячейки? - PullRequest
0 голосов
/ 13 мая 2011

Рассмотрим форму ввода данных, в которой пользователю необходимо ввести время в военном формате.Они хотят набирать с клавиатуры, чтобы ускорить их работу, но не хотят вводить двоеточие (:) между часами / минутами.

Столбец отформатирован, чтобы разрешить время, и автоматически преобразует время встандартные форматы AM / PM.К сожалению, для этого требуется двоеточие.Поэтому на этом входе необходимо запустить метод преобразования, чтобы попытаться преобразовать его во временное значение.

Способ сделать это не является частью ответа, который я ищу.Это может представлять любую причину, по которой кто-то захочет изменить значение, введенное пользователем, в другое значение.Ключевым моментом является то, что это должно произойти до проверки, чтобы событие DataError не вызывалось.

Я предполагал, что CellValidating будет подходящим местом для этого, поэтому я написал то, что ожидал работать:


private void sampleDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
    // Ensure we're looking at the column that requires our attention
    if (sampleDataGridView.Columns[e.ColumnIndex].Name == "timeCol")
        sampleDataGridView[e.ColumnIndex, e.RowIndex].Value = convertMilitary(e.FormattedValue);

}

При входе в этот код после записи в ячейку аргументы события говорят мне, что отформатированное значение действительно соответствует ключу, но попытка установить текущее значение ячейки не помогает валидации,При ближайшем рассмотрении я узнал, что это значение остается тем же, что и до ввода пользователя.

Это ставит меня в тупик, потому что я не вижу, где еще я мог бы это поставить.Я чувствую, что нахожусь в правильном месте, но я что-то упускаю.Куда мне поместить это преобразование, чтобы событие DataError не возникало из-за неудачной проверки?

Возможно, есть другое свойство, которое мне нужно установить?Как будто я должен изменить то, что пользователь ввел, а не значение ячейки напрямую, как я пытаюсь сделать ...

1 Ответ

1 голос
/ 13 мая 2011

Вы смотрели на использование события CellParsing ?Кажется, я вспоминаю об этом, когда мне нужно было сделать нечто подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...