Sharma Hussein Ответов: 2

Практическое руководство cellvalidating не работает


У меня есть 3 колонки

* имя элемента
* Количество в наличии
* Количество для передачи

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



Однако это событие происходит не в то точное время, которое я хочу. Это позволяет мне покинуть строку без появления сообщения.

Что я уже пробовал:

Частная суб DataGridView1_CellValidating(как byval отправителя как объект, как byval E Как системы.Окна.Формы.DataGridViewCellValidatingEventArgs) Обрабатывает DataGridView1.CellValidating

С DataGridView1.Строк(электронная.Параметр rowindex)
Если e. ColumnIndex = 2, то " это индекс col для передаваемого qty
Если .Клетки(2).Значение и GT; .Клетки(1).Значение Тогда
Ящик для сообщений.Show ("у вас недостаточно количества", "ошибка ввода", MessageBoxButtons.Хорошо, MessageBoxIcon.Ошибка)
е.Отмена = Истина
Конец, Если
Конец, Если
Конец С
конец подводной лодки

2 Ответов

Рейтинг:
9

Sharma Hussein

Благодаря Ю. О. В. Ю... Кажется, я понял, в чем проблема. Значение еще не было записано в ячейку, поэтому я использовал значение, которое передается из события, и это решило мою проблему

If Convert.ToInt32(e.FormattedValue) > Convert.ToInt32(.Cells(1).Value) Then


Рейтинг:
18

ProgrammingEnthusiast

Private Sub DataGridView1_RowValidating(sender As Object, e As DataGridViewCellCancelEventArgs) Handles DataGridView1.RowValidating
       Dim transferredQTY, onHandQTY As Double
       With DataGridView1.Rows(e.RowIndex)

           Try
               transferredQTY = Convert.ToDouble(.Cells(2).Value)
           Catch ex As Exception
               transferredQTY = 0
           End Try
           Try
               onHandQTY = Convert.ToDouble(.Cells(1).Value)
           Catch ex As Exception
               transferredQTY = 0
           End Try
           If transferredQTY > onHandQTY Then
               MessageBox.Show("You don't Have sufficient quantity ", "Input Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
               e.Cancel = True
           End If

       End With
   End Sub