我尝试删除与包含附加参数的子有关的处理程序,但它不起作用并生成警告:
“'AddressOf' 表达式在此上下文中无效,因为 'AddressOf' 的方法参数需要放松转换为事件的委托类型。将“AddressOf”表达式分配给变量,并使用该变量作为处理程序添加或删除方法。
这是我的子:
Private Sub ComboBox_MFC_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs, Optional ByVal SingleCase As Int16 = -1) Handles ComboBox_MFC.SelectedValueChanged
...
End Sub
这是我删除此处理程序的初始代码:
Private Sub Me_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load
...
RemoveHandler ComboBox_MFC.SelectedValueChanged, AddressOf ComboBox_MFC_SelectedValueChanged
'TODO: This line of code loads data into the 'MyDataSet1.MFC' table. You can move, or remove it, as needed.
Me.MFCTableAdapter.Fill(Me.MyDataSet1.MFC)
ComboBox_MFC.DataSource = New DataView(Me.MyDataSet1.MFC, "IsPresent = True", "Name", DataViewRowState.CurrentRows)
ComboBox_MFC.ValueMember = "Name"
ComboBox_MFC.DisplayMember = "Name"
...
AddHandler ComboBox_MFC.SelectedValueChanged, AddressOf ComboBox_MFC_SelectedValueChanged
...
End Sub
不幸的是,处理程序没有被正确删除,并且当组合框被填充时执行通过我的子。
所以我已经完成了建议做的消息,并且我使用了一个变量来分配 addressOf 表达式。
这是我尝试过的:
Private Sub Me_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load
...
Dim ComboboxesEventAddress As New EventHandler(AddressOf ComboBoxes_SelectedValueChanged)
RemoveHandler ComboBox_MFC.SelectedValueChanged, ComboboxesEventAddress
...
AddHandler ComboBox_MFC.SelectedValueChanged, ComboboxesEventAddress
End Sub
警告消息消失,但问题仍然存在。
PS:我使用紧凑型框架