2016-08-11 5 views
1

У меня есть 3 колонкиDataGridView CellValidating Не работает отлично

  • Название товара

  • Количество на руке

  • Количество передачи

имя элемента и qty на руку diplayed пользователю . Если он попытается ввести число, которое больше, чем количество, которое он имеет на руках; Мне нужно MessageBox всплывал ...


это то, что я попытался

Private Sub DataGridView1_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating 

    With DataGridView1.Rows(e.RowIndex) 
       If e.ColumnIndex = 2 Then '' this is the col index for qty to be transfered 
        If .Cells(2).Value > .Cells(1).Value Then 
         MessageBox.Show("You don't Have sufficient quantity ", "Input Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
         e.Cancel = True 
        End If 
       End If 
      End With 
end sub 

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

ответ

0

значение не записывается в ячейку еще, так что используйте значение, которое передается в настоящее время вам от мероприятия:

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

Боковая примечание: Set Option Strict On в коде, так как ценности и FormattedValue return объектов.

+0

Нет ошибок, и его работа. Спасибо за подсказку, запомните это на будущее. Благодарю. –

Смежные вопросы