获取自定义发件人

时间:2013-12-20 09:20:04

标签: vb.net

我对datagridview感兴趣。

在_keydown处理程序下是这样的代码:

rowindex = DataGridView1.CurrentRow.Index
Dim cea As New DataGridViewCellEventArgs(4, rowindex)
DataGridView1_CellClick("program", cea)

通过这个I"以编程方式点击"到当前行的单元格4以获得我的逻辑程序流程 但我也可以用鼠标点击单元格4,在datagridview上也会发生同样的情况。

问题是: 如何在datagridview的_CellClick处理程序下识别谁激活了事件(通过鼠标或程序)?为此,我通过姓名"程序"。

呼叫发件人

我可以以某种方式在_CellClick处理程序下获取此名称(发件人姓名),以及如何将发件人转换为" program"。或者我可以?

1 个答案:

答案 0 :(得分:1)

首先:您不应该直接调用事件处理程序方法。并且fyi甚至与提升事件不同,因为其他事件处理程序没有被执行。

这种方法更好

Private Sub DataGridView1_CellClick(sender as object, e as DataGridViewCellEventArgs)
   ProcessCellClick(e.RowIndex, e.ColumnIndex, true)
End Sub

Private Sub Button1_Click(...)
   rowindex = DataGridView1.CurrentRow.Index
   ProcessCellClick(rowIndex, 4, false)
End Sub

Private Sub ProcessCellClick(rowIndex as Integer, columnIndex as integer, fromCellClickEvent as boolean)
    ...
End Sub

这就是我要做的。 无论如何,如果您只是想检查发件人,这将有所帮助。

Private Sub DataGridView1_CellClick(sender as object, e as DataGridViewCellEventArgs)
    if sender.Equals(DataGridView1) then
      ...
    else
      ...
    end if
End Sub

Another approach to check if an event (like TextBox.TextChanged) is initiatet by the user is this one


Private Sub DataGridView1_CellClick(sender as object, e as DataGridViewCellEventArgs)

    If me.ActiveControl Is DataGridView1 Then
       ' DataGridView is focused
    End If

End Sub