ComboBox - 在运行时禁用键盘手动输入vb6

时间:2015-08-13 12:42:22

标签: combobox vb6

我的组合框STYLE属性为0(可编辑)。 但是对于某些条件我想禁用手动输入。 我尝试将STYLE属性设置为2.但它抛出错误说它是只读属性。 请帮忙。

3 个答案:

答案 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个除样式之外相同的组合框控件,并在隐藏另一个时显示所需的组合。