有很多与此相关的帖子,但我还没有找到任何我正在寻找的解决方案。
加载ComboBox时,在设置ValueMember时会触发SelectedValueChanged事件。 我有一个方法,在应用程序中加载几乎所有的ComboBox,并且通常根据用户的操作重新加载。因此,仅在加载后对AddHandler不实用。
我想做的是使用ComboBox加载程序方法:
这样的事情:
Public Sub LoadComboBox(ByVal cbo As ComboBox)
'Save Event Handler
Dim eHandler As [Delegate] = Something(cbo)
RemoveHandler cbo.SelectedValueChanged, eHandler
'Load ComboBox
'...
cbo.ValueMember = "Key"
cbo.DisplayMember = "Value"
'Restore Event Handler
AddHandler cbo.SelectedValueChanged, eHandler
End Sub
我已经查看了一个在How to Attach the Events of an Original Object to a Deep Copied Clone检索事件处理程序的建议,但它并不适合我,因为GetField方法总是返回Nothing。
我目前正在各处使用布尔值来控制事件处理程序代码是否执行任何操作,但这很麻烦且容易出错。