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,再次允许输入。
我的组合框 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,再次允许输入。