我对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"。或者我可以?
答案 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