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

ComboBox - disabling Keyboard manual input at runtime in vb6

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

您可以在 Combo 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

KeyPress 中设置 KeyAscii = 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

解决这个问题的老办法是伪造样式更改。创建 2 个除样式外完全相同的组合框控件,并显示您想要的一个而隐藏另一个。

jac 提到的老把戏已经很老了,可以追溯到 VB3。你也不想在这种情况下使用 C-Pound 的解决方案(对不起 CP,无意冒犯),因为用户可以使用鼠标将文本复制并粘贴到框中。

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