【发布时间】:2015-08-02 17:35:19
【问题描述】:
我希望我的组合框将其selectedindex 重置为-1 并在选择下拉列表中的最后一项时打开一个表单。我目前正在通过以下方式实现它:
Private Sub cmbPrdMnu_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbPrdMnu.SelectedIndexChanged
If cmbPrdMnu.SelectedIndex > -1 Then
If cmbPrdMnu.SelectedItem.Equals("new...") Then
cmbPrdMnu.SelectedIndex = -1
'cmbPrdMnu.Text = ""
frmManufacturer.Show()
'cmbPrdCat.ResumeLayout()
End If
End If
End Sub
我的问题是组合框实际上会在删除文本然后打开表单之前显示所选项目。请问如何防止它显示所选项目?
谢谢
【问题讨论】:
-
奇怪,我刚刚在 Win10 / .NET 4.5.1 上进行了测试,它运行良好。您是否尝试过使用
cmbPrdMnu.Refresh()强制更新组合框? -
你好,Saragis,我刚刚升级到 .NET 4.6 并尝试了
cmbPrdMnu.Refresh(),但它并没有改变任何东西。实际上,是cmbPrdMnu.SelectedIndex = -1从组合框中删除了文本。我不希望客户在组合框中看到“新...”。我想我将代码放在错误的 EventHandler 中,但我似乎没有解决它。请帮忙,任何人。 -
嗨,好的,我误解了你原来的问题。因此,您正在尝试进行类似悬停索引更改的事件,对吗?我查看了您的 VB 类,可以通过在
OnHover中调用RaiseEvent Hover(Me, e)在myCustomCombobox类中解决问题。不再需要所有其他代码。此外,您需要在表单中添加一个处理cmbPrdMnu.Hover事件的 Sub。这应该有效。 -
这是签名
Private Sub cmbPrdMnu_Hover(sender As Object, e As Custom.HoverEventArgs) Handles cmbPrdMnu.Hover -
否,控件实际上需要是
myCustomCombobox类型,而不仅仅是Combobox。您可以在表单的 Designer 文件中更改类型。