【问题标题】:VB.NET one click or key event for multiple datagridviewsVB.NET 多个datagridviews的一键点击或按键事件
【发布时间】:2017-10-25 21:58:30
【问题描述】:

我有 4 个数据网格视图,比如说 Dgv1、Dgv2、Dgv3、Dgv4

假设我想用上下箭头键上下移动行。

有没有办法为所有数据网格视图编写一次代码?

目前我必须像这样编码 4 次:

Private Sub Dgv1_KeyUp(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Dgv1.KeyUp
    If e.KeyCode = Keys.Up OR e.KeyCode = Keys.Down OR e.KeyCode = Keys.PageUp Or e.KeyCode = Keys.PageDown Then
        Dim crRowIndex As Integer = Dgv1.CurrentCell.RowIndex
        Value = Dgv1.Rows(crRowIndex).Cells(4).Value.ToString
        ' Do more stuff
    End If
End Sub

这四次。所有 datagridviews 从不同的 sql 表中获取不同的数据,但功能是相同的。虽然我需要在其他数据网格视图中使用不同的单元格。

【问题讨论】:

    标签: vb.net datagridview keyevent mouseclick-event


    【解决方案1】:

    尝试将其更改为:

    Private Sub Dgv1_KeyUp(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Dgv1.KeyUp, dgv2.keyup, dgv3.keyup, dgv4.keyup
    If e.KeyCode = Keys.Up OR e.KeyCode = Keys.Down OR e.KeyCode = Keys.PageUp Or e.KeyCode = Keys.PageDown Then
        Dim dgv as DataGridView = DirectCast(sender, DataGridView)
        Dim crRowIndex As Integer = dgv.CurrentCell.RowIndex
        Value = dgv.Rows(crRowIndex).Cells(4).Value.ToString
        ' Do more stuff
    End If
    End Sub
    

    基本上,您只是添加到 Handles 列表,然后使用 sender 获取正在处理的特定 datagridview

    【讨论】:

    • 这不会与Option Strict On 一起编译,因为sender 的类型为Object,它没有名为CurrentCell 的属性。您需要将 sender 转换为正确的类型,使用:DirectCast(sender, DataGridView)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    相关资源
    最近更新 更多