2016-06-02 3 views
0

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

Private Sub Grid_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles Grid.CellValidating 
Dim newValue = e.FormattedValue.ToString 

If Not Grid.Rows(e.RowIndex).IsNewRow Then    'And Not e.RowIndex = Grid.NewRowIndex - 1 Then 
    Select Case e.ColumnIndex 
     Case 1 'Name 
      If String.IsNullOrEmpty(newValue) Then 
       e.Cancel = True 
       Exit Select 
      End If 
     Case Else 
    End Select 
End If 
End Sub 

То, что я пытался сделать, таким образом, но это совершенно не работает:

Private Sub Grid_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles Grid.CellValidating 
     Dim newValue = e.FormattedValue.ToString.Trim '<---trim added 

'change value of cell without trims 
     Dim aaa As DataGridViewCell = CType(sender, DataGridView).Rows(e.RowIndex).Cells(e.ColumnIndex) 
     aaa.Value = newValue 


     If Not Grid.Rows(e.RowIndex).IsNewRow Then    'And Not e.RowIndex = Grid.NewRowIndex - 1 Then 
      Select Case e.ColumnIndex 
       Case 1 'Name 
        If String.IsNullOrEmpty(newValue) Then 

         e.Cancel = True 
         Exit Select 
        End If   
       Case Else 
      End Select 
     End If 
    End Sub 
+0

'но он полностью не работает' - в котором он не работает? Какие побочные эффекты вы получили во время отладки вашего кода шаг за шагом? Какое значение имеет 'e.FormattedValue.ToString' до и после Trim? –

+0

@Alex B. до того, как он дал правильное значение, и после подрезания он делает это правильно - обрезка. Это верно. Теперь я не знаю, как сохранить это значение aftertrimming в ячейку. –

+2

Как @jmcilhinney написал код триммера в обработчик события CellValidated и оставить значение IsNullOrEmpty в обработчике событий CellValidating. –

ответ

0

Это неправильно событие. CellValidating предназначен для определения того, является ли содержимое ячейки действительным или нет. CellValidated или CellLeave были бы более подходящими для вашей ситуации.

+0

ok, но есть ли способ изменить его в нем? –

+0

Вы делаете именно то, что ожидаете, но делаете это в обработчике для правильного события. – jmcilhinney

+0

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

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