任何人都可以帮我将这个c#代码转换为vb吗?
每当我运行项目时,我都会遇到问题,有人可以帮我解决这个问题吗?代码在c#中工作得很好,但是当我在vb中尝试这个时,它会抛出错误公共事件选择已经被发现并且不能直接调用,使用“提升事件”声明来提升事件。 问题是如何转换这个C#语法ItemNameComboBox.SelectedValueChanged - = ItemNameComboBox_SelectedValueChanged; 进入vb语法?
这是代码;
Private Sub ItemNameComboBox_MouseClick(sender As Object, e As MouseEventArgs) Handles ItemNameComboBox.MouseClick
LoadDataIntoItemComboBox()
ItemNameComboBox.SelectedValueChanged -= ItemNameComboBox_SelectedValueChanged
ItemNameComboBox.DisplayMember = "ItemName"
ItemNameComboBox.ValueMember = "Unit_Price"
ItemNameComboBox.SelectedValueChanged += ItemNameComboBox_SelectedValueChanged
End Sub
Private Sub ItemNameComboBox_SelectedValueChanged(sender As Object, e As EventArgs) Handles ItemNameComboBox.SelectedValueChanged
Dim ProductPrice As Decimal = Convert.ToDecimal(ItemNameComboBox.SelectedValue)
UnitPriceTextBox.Text = ProductPrice.ToString()
End Sub
答案 0 :(得分:0)
我已经解决了这个问题,并希望分享解决方案以防万一其他人遇到同样的问题。 好吧在C#我们用来写 - =来禁用一个事件而+ =来启用一个事件,例如 此代码将禁用该事件
ItemNameComboBox.SelectedValueChanged -= ItemNameComboBox_SelectedValueChanged;
并且此代码将启用该事件。
ItemNameComboBox.SelectedValueChanged -= ItemNameComboBox_SelectedValueChanged;
现在将这些代码行从C#转换为VB.NET 在vb中,我们使用AddHandler而不是+ =来启用或注册事件,类似地使用RemoveHandler而不是 - =来禁用或取消注册事件。 所以上面代码禁用事件的vb语法将是
RemoveHandler ItemNameComboBox.SelectedValueChanged, New EventHandler(AddressOf ItemNameComboBox_SelectedValueChanged)
和 启用事件
AddHandler ItemNameComboBox.SelectedValueChanged, New EventHandler(AddressOf ItemNameComboBox_SelectedValueChanged)
希望我已经回答了这个问题。