前几天在做机房收费系统的“上机状态查询”,遇见了这样一个问题。
如图窗体,我想通过调节“组合关系”来控制这三排控件的Enable情况。想通过ComboBox的Change事件来实现调节他们的使用情况,即:
首先,依次保持每个可用控件的输入框不能为空;
然后,第一排始终保持可用;
组合关系一不为空时,第二排保持可用,为空则不可用;
组合关系二不为空时,第三排保持可用,为空则不可用。
最后,执行查询。
但是,当我编好代码执行时,却怎么也不能实现。
开始以为其他方面可能有问题,就重新建立了一个试验窗体进行测试。
代码如下:
Private Sub Combo1_Change(Index As Integer)
If Combo1(0).Text = "" Then
Combo1(1).Enabled = False
Else
Combo1(1).Enabled = True
End If
End Sub
前提条件:ComboBox的style属性为0
这样执行的效果是:开始两个控件均可用,当combo(0)内输入内容再删除时才达到想要的效果,即combo(0)为空,combo(1)可用,反之不可用。
当前提条件变为:ComboBox的style属性为2
无论combo(0).Text的值是否为空,combo(1)的Enable都毫无反应。
后来经过上网查找,才发现,ComboBox和Text的Change功能不一样,集中体现在它的Style属性上。
ComboBox-Change事件仅在Style属性设置为0(下拉Combo)或1(简单Combo)和正文被改变或者通过代码改变了Text属性的设置时才会发生。两个条件都要满足才触发CHANGE事件。而Text并没有Style属性。
其实,实现开头所述的控制功能很简单,就是把ComboBox的Change事件改成Click事件就OK了。
所以我们在认识和使用一个事物时,不能简单地套用类似事物的使用方法。对比学习很重要,但对比出新的东西,找出不同点,总结合并相同点才是学习一类事物的有效途径。