Combobox 组合框-在vb6中禁用运行时的键盘手动输入

Combobox 组合框-在vb6中禁用运行时的键盘手动输入,combobox,vb6,Combobox,Vb6,我的组合框样式属性为0(可编辑)。 但在某些情况下,我想禁用手动输入。 我尝试将STYLE属性设置为2。但如果说它是只读属性,则会出现错误。 请提供帮助。您可以通过组合键按键来处理此问题。设置模块级布尔值以指示是否可以编辑组合: Private m_ComboDisabled As Boolean 然后在组合的按键事件中: Private Sub Combo1_KeyPress(KeyAscii As Integer) If m_ComboDisabled Then K

我的组合框样式属性为0(可编辑)。 但在某些情况下,我想禁用手动输入。 我尝试将STYLE属性设置为2。但如果说它是只读属性,则会出现错误。
请提供帮助。

您可以通过组合键
按键来处理此问题。设置模块级布尔值以指示是否可以编辑组合:

Private m_ComboDisabled As Boolean
然后在组合的
按键事件中:

Private Sub Combo1_KeyPress(KeyAscii As Integer)
    If m_ComboDisabled Then
        KeyAscii = 0
        Exit Sub
    End If
End Sub
KeyPress
中设置
keyacii=0
会吞下按键

为了更彻底,您还需要处理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

处理此问题的旧技巧是伪造样式更改。创建两个除了样式之外完全相同的组合框控件,并在隐藏另一个控件的同时显示所需的组合框控件。

jac提到的旧技巧非常古老,可以追溯到VB3。在这种情况下,您也不想使用C-Pound的解决方案(对不起,CP,无意冒犯),因为用户可以使用鼠标将文本复制并粘贴到框中


由于VB4,任何允许输入的控件都有一个锁定属性,这就是您想要的。将其设置为true,则没有人可以在框中键入内容。将其设置为false,然后再次允许键入。

锁定
是一个明显的方法。很好的捕获。我忘了
已锁定