Kamis, 16 Desember 2010

Validate a column in DataGridView

Prevent the user from entering data other than numbers to a DataGridView cell

'EditingControlShowing event. This event is fired when the user tries to edit the content of a cell: 
    Private Sub DataGridView1_EditingControlShowing( _
       ByVal sender As Object, _
       ByVal e As System.Windows.Forms. _
       DataGridViewEditingControlShowingEventArgs) _
       Handles DataGridView1.EditingControlShowing

        '---restrict inputs on the Amount Field---
        If Me.DataGridView1.CurrentCell.ColumnIndex = DataGridView1.Columns("Amount").Index And Not e.Control Is Nothing Then

            Dim tb As TextBox = CType(e.Control, TextBox)

            '---add an event handler to the TextBox control---
            AddHandler tb.KeyPress, AddressOf TextBox_KeyPress
        End If

    End Sub


    'KeyPress event handler to the TextBox control that you want to restrict. 
    'This KeyPress event handler will be invoked when the user types into the cell and it is defined as     follows: 
    Private Sub TextBox_KeyPress( _
       ByVal sender As System.Object, _
       ByVal e As System.Windows.Forms.KeyPressEventArgs)

        '---if textbox is empty and user pressed a decimal char---
        If CType(sender, TextBox).Text = String.Empty And _
           e.KeyChar = Chr(46) Then
            e.Handled = True
            Return
        End If
        '---if textbox already has a decimal point---
        If CType(sender, TextBox).Text.Contains(Chr(46)) And _
           e.KeyChar = Chr(46) Then
            e.Handled = True
            Return
        End If
        '---if the key pressed is not a valid decimal number---
        If (Not (Char.IsDigit(e.KeyChar) Or _
           Char.IsControl(e.KeyChar) Or _
           (e.KeyChar = Chr(46)))) Then
            e.Handled = True
        End If
    End Sub

 

Tidak ada komentar:

Posting Komentar