VB.NET DataGridView限制列只能输入数字问题

火傅 2020-12-27 03:23:25
下面的代码限制了5个DataGridView第2列只能输入数字,但只要触发了限制,第1列也会被限制了,除了输入数字不能输入其他的,大神们帮看看哪里出问题了

    Public EditCell As DataGridViewTextBoxEditingControl
Private Sub DataGridView1_EditingControlShowing(sender As Object, e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing

If Me.DataGridView1.CurrentCellAddress.X = 1 Then
EditCell = CType(e.Control, DataGridViewTextBoxEditingControl)
EditCell.SelectAll()
AddHandler EditCell.KeyPress, AddressOf Cells_KeyPress

End If

End Sub

Private Sub DataGridView2_EditingControlShowing(sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView2.EditingControlShowing
If Me.DataGridView2.CurrentCellAddress.X = 1 Then
EditCell = CType(e.Control, DataGridViewTextBoxEditingControl)
EditCell.SelectAll()
AddHandler EditCell.KeyPress, AddressOf Cells_KeyPress
End If

End Sub

Private Sub DataGridView3_EditingControlShowing(sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView3.EditingControlShowing
If Me.DataGridView3.CurrentCellAddress.X = 1 Then
EditCell = CType(e.Control, DataGridViewTextBoxEditingControl)
EditCell.SelectAll()
AddHandler EditCell.KeyPress, AddressOf Cells_KeyPress
End If
End Sub

Private Sub DataGridView4_EditingControlShowing(sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView4.EditingControlShowing
If Me.DataGridView4.CurrentCellAddress.X = 1 Then
EditCell = CType(e.Control, DataGridViewTextBoxEditingControl)
EditCell.SelectAll()
AddHandler EditCell.KeyPress, AddressOf Cells_KeyPress
End If
End Sub

Private Sub DataGridView5_EditingControlShowing(sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView5.EditingControlShowing
If Me.DataGridView5.CurrentCellAddress.X = 1 Then
EditCell = CType(e.Control, DataGridViewTextBoxEditingControl)
EditCell.SelectAll()
AddHandler EditCell.KeyPress, AddressOf Cells_KeyPress
End If
End Sub
Private Sub Cells_KeyPress(sender As System.Object, e As KeyPressEventArgs)
If e.KeyChar <> Chr(8) And e.KeyChar <> Chr(13) And (e.KeyChar < Chr(48) Or e.KeyChar > Chr(57)) Then
Beep()
Beep()
e.KeyChar = Chr(0)

End If
End Sub
...全文
10166 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
火傅 2021-01-02
  • 打赏
  • 举报
回复
感谢版主指点迷津
水哥阿乐 2020-12-31
  • 打赏
  • 举报
回复
火傅楼主,非常抱歉回复太迟,见谅,最近一直在忙工作,好久没有上CSDN了,承蒙看得太高,今天收到你的私信才上来光顾一下。估计你这也是网上借用的代码,活用一下,加个焦点列的判断标志flag就行。
水哥阿乐 2020-12-31
  • 打赏
  • 举报
回复
    Public EditCell As DataGridViewTextBoxEditingControl
Private Flag As Boolean '焦点是否在第二列的判断标志
Private Sub DataGridView1_EditingControlShowing(sender As Object, e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
If Me.DataGridView1.CurrentCellAddress.X = 1 Then
EditCell = CType(e.Control, DataGridViewTextBoxEditingControl)
EditCell.SelectAll()
AddHandler EditCell.KeyPress, AddressOf Cells_KeyPress
Flag = True
Else
Flag = False
End If
End Sub

Private Sub Cells_KeyPress(sender As System.Object, e As KeyPressEventArgs)
If Flag = True Then
If e.KeyChar <> Chr(8) And e.KeyChar <> Chr(13) And (e.KeyChar < Chr(48) Or e.KeyChar > Chr(57)) Then
Beep()
Beep()
e.KeyChar = Chr(0)
End If
End If
End Sub

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧