【发布时间】:2016-04-03 16:40:06
【问题描述】:
我有一个 datagridview (DataGridViewsalarydetail)。它有 3 列:
- 公式(只接受数字和字母),
- 生效日期(仅接受日期:14/09/2016),
- 基本费率(仅接受数字和点 [.] 表示双精度)。
问题是如何将日期时间选择器放在数据网格视图中或如何将日期列设置为只接受有效日期?
我正在使用 Visual Basic Express 2015、MySQL、phpMyAdmin 和 VB.NET
我尝试过 MSDN 网站上的代码,但我不知道如何在我的项目中实现。
Private Sub DataGridViewsalarydetail_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridViewsalarydetail.EditingControlShowing
If TypeOf e.Control Is TextBox Then
DirectCast(e.Control, TextBox).CharacterCasing = CharacterCasing.Upper
End If
If DataGridViewsalarydetail.CurrentCell.ColumnIndex = 0 Then
AddHandler CType(e.Control, TextBox).KeyPress, AddressOf TextBox_keyPress
ElseIf DataGridViewsalarydetail.CurrentCell.ColumnIndex = 1 Then
AddHandler CType(e.Control, TextBox).KeyPress, AddressOf TextBox_keyPress2
ElseIf DataGridViewsalarydetail.CurrentCell.ColumnIndex = 2 Then
AddHandler CType(e.Control, TextBox).KeyPress, AddressOf TextBox_keyPress1
End If
End Sub
Private Sub TextBox_keyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
'If Char.IsDigit(CChar(CStr(e.KeyChar))) = False Then e.Handled = True
End Sub
Private Sub TextBox_keyPress1(ByVal sender As Object, ByVal e As KeyPressEventArgs)
'If Not (Char.IsDigit(CChar(CStr(e.KeyChar))) Or e.KeyChar = ".") Then e.Handled = True
e.Handled = True
If e.KeyChar Like "." Or e.KeyChar = Chr(&H8) Or IsNumeric(e.KeyChar) Then
e.Handled = False
End If
End Sub
Private Sub TextBox_keyPress2(ByVal sender As Object, ByVal e As KeyPressEventArgs)
If Not (Char.IsDigit(CChar(CStr(e.KeyChar))) Or e.KeyChar = "/") Then e.Handled = True
'e.Handled = True
'If e.KeyChar Like "." Or e.KeyChar Like "/" Or e.KeyChar = Chr(&H8) Or IsNumeric(e.KeyChar) Then
' e.Handled = False
'End If
End Sub
Private Sub DataGridViewsalarydetail_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles DataGridViewsalarydetail.CellValidating
If e.ColumnIndex = 1 Then
Dim dt As DateTime
If e.FormattedValue.ToString <> String.Empty AndAlso Not DateTime.TryParse(e.FormattedValue.ToString, dt) Then
MessageBox.Show("Enter correct Date")
'Me.DataGridViewsalarydetail.Rows(e.RowIndex).ErrorText = "Enter a valid Date time"
e.Cancel = True
End If
End If
End Sub
【问题讨论】:
标签: vb.net datagridview