我知道我已经晚了几年,但你总是可以在一个类变量的范围内,然后在事后设置它。这并不是一种完全坚定的做事方式,但它比仅仅希望你没有任何东西或每次添加它都更好。在我的情况下,我在一个WinForms应用程序中使用了这个,我想添加一个处理器来拖放到datagridview表面。如果其他datagridview的部分内容尚未完全填充,我想停止此功能。
因此,这将是这样的:
类级别
Private _handlersAdded As Boolean = False
构造:
Public Sub New()
AddHandler dgv.DragEnter, AddressOf DragEnter
_handlersAdded = True
End Sub
方法确定问题:
Private Sub CheckRowsAreDone()
For Each row As DataGridViewRow In dgv.Rows
Dim num = 0
For i = 0 To row.Cells.Count - 1
Dim val = If(Not String.IsNullOrEmpty(row?.Cells(i)?.Value?.ToString), 1, -1)
num += val
Next
If num > -(row.Cells.Count) And num < (row.Cells.Count) Then
RemoveHandler dgv.DragEnter, AddressOf DragEnter
_handlersAdded = False
Exit Sub
End If
If Not _handlersAdded Then
AddHandler dgv.DragEnter, AddressOf DragEnter
_handlersAdded = True
End If
Next
End Sub
“文件,它伤害时,我这样做。“ “所以不要这样做。” – 2010-08-13 13:40:29
你说得对,它是一种黑客行为,特别是因为让你的事件挂钩可以有效地导致内存泄漏。 – 2010-08-13 20:30:34