我的组合框STYLE属性为0(可编辑)。 但是对于某些条件我想禁用手动输入。 我尝试将STYLE属性设置为2.但它抛出错误说它是只读属性。 请帮忙。
答案 0 :(得分:2)
jac提到的旧技巧非常古老,回到VB3。在这种情况下,您不想使用C-Pound的解决方案(抱歉CP,没有违法行为),因为用户可以使用鼠标将文本复制并粘贴到框中。
由于VB4允许输入的任何控件都具有Locked属性,这就是你想要的。将其设置为true,没有人可以在框中输入。将其设置为false,再次允许输入。
答案 1 :(得分:1)
您可以在组合KeyPress
中处理此问题。设置模块级布尔值以指示是否可以编辑组合:
Private m_ComboDisabled As Boolean
然后在你的KeyPress
组合事件中:
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If m_ComboDisabled Then
KeyAscii = 0
Exit Sub
End If
End Sub
在KeyAscii = 0
中设置KeyPress
吞下按键。
要彻底,您还需要处理KeyDown:
Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
If m_ComboDisabled Then
KeyCode = 0
Exit Sub
End If
End Sub
正如其他人所提到的,这不会阻止右击,粘贴。
最佳解决方案是在您要禁用任何输入(包括右键单击,粘贴)时设置Combo1.Locked = true
。
答案 2 :(得分:0)
处理这个问题的一个老技巧是伪造风格变化。创建2个除样式之外相同的组合框控件,并在隐藏另一个时显示所需的组合。