vb.net / winform - ComboBox SelectedIndexChanged?

时间:2011-01-27 23:09:03

标签: vb.net combobox

当我的表单加载时,在填充并选择了ComboBox之前,会触发此事件(SelectedIndexChanged)。如何防止代码在表单完全加载之前将此事件从执行中保留?我尝试测试.SelectedIndex,但它返回0.

3 个答案:

答案 0 :(得分:1)

在vb设计/编辑器中将combobox enabled property添加到false然后在将所有内容加载到组合框后添加combobox1.enabled=true

这会有所帮助!

答案 1 :(得分:1)

这种情况正在发生,因为当您在启动时向组合框添加项目时,它会自动选择列表中的第一个作为要显示的值(组合框默认行为)。第一项的默认选择会导致selectedindexchanged处理程序触发并运行例程。

你应该做的是使用addhandler和removehandler。

例如:

你的组合框索引更改例程被称为“indexchangedroutine”,你的组合框称为“mycombobox”。

启动时:

addhandler mycombobox.selectedindexchanged, addressof indexchangedroutine

addressof部分是此控件事件触发时要调用的例程的名称。

为防止例程在启动时触发,您应首先填充组合框项目,然后再调用addhandler来链接事件和逻辑。

如果需要进行更新(如更新计时器),您可以调用removehandler而不是addhandler,它将取消逻辑与控件事件之间的链接。您可以进行更新,完成后,可以再次调用addhandler将其链接起来备份以供使用。

希望这对你有所帮助。看起来似乎涉及更多的代码,但是这种方法避免了在selectedindexchanged例程中使用hacky修复程序,例如“在这里”标记。

答案 2 :(得分:0)

请问.Validate.children确实工作了