VB.NET:如何防止用户在ComboBox中input
如何防止用户在ComboBox中input,以便用户只能select定义列表中的一个项目?
将combobox的DropDownStyle
属性设置为DropDownList
。 这将只允许select列表中的项目,并且不允许任何自由forms的用户input。
看到一个用户不顾一切地控制自己的决定,是一个悲伤的景象。 将控件的Enabled属性设置为False。 如果你不喜欢,那么改变它的Items属性,这样只有一个项目是可选的。
使用KeyPressEventArgs,
Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress e.Handled = True End Sub
只读combobox。 在这种情况下,用户不能input他的\她的文本或不能更改数据。
脚步:
- select你的combobox。
- 转到其属性框并selectDropdownStyle并将其值更改为DropdownList。
将ReadOnly属性设置为true。
或者,如果您希望combobox出现并显示“可用”值列表,则可以处理ValueChanged事件,并强制它返回到您的不变值。
这是最简单的方法,但它适用于ComboBox1名称
解决scheme3基本步骤:
步骤1。
在窗体的开头声明一个variables,该variables将保存ComboBox的原始文本值。 例:
Dim xCurrentTextValue as string
第2步。
创build事件combobox1键,然后赋值给xCurrentTextValuevariablescombobox的当前文本,如果按下与“ENTER”不同的任何键,则combobox文本值保持原始文本值
例:
Private Sub ComboBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles ComboBox1.KeyDown xCurrentTextValue = ComboBox1.Text If e.KeyCode <> Keys.Enter Then Me.ComboBox1.Text = xCmbItem End If End Sub
步骤3。
如果len(xcurrenttextvalue)> 0或者不同于空,则validation组合文本何时被改变,那么combobox1采用xcurrenttextvaluevariables值
Private Sub ComboBox1_TextChanged(sender As Object, e As EventArgs) Handles ComboBox1.TextChanged If Len(xCurrentTextValue) > 0 Then Me.ComboBox1.Text = xCurrentTextValue End If End Sub
================================================== ========就是这样,
本来我只尝试了第2步,但我有问题,当你按下DEL键和向下箭头键,也出于某种原因,它没有validation的keydown事件,除非我显示任何消息框
!对不起,这是第2步的更正,我忘了将variablesxCmbItem更改为xCurrentTextValue,xCmbItem用于我个人使用
这是正确的代码
xCurrentTextValue = ComboBox1.Text If e.KeyCode <> Keys.Enter Then Me.ComboBox1.Text = xCurrentTextValue End If
—-在forms层面宣言cbx veriable —
Dim cbx as string Private Sub comboBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboBox1.Enter cbx = Me.comboBox1.Text End Sub Private Sub comboBox1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboBox1.Leave Me.comboBox1.Text = cbx End Sub
我纠正格式 – 谢谢
—-在表单级别中声明cbx veriable — dim cbx as string
Private Sub comboBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboBox1.Enter cbx = Me.comboBox1.Text End Sub Private Sub comboBox1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboBox1.Leave Me.comboBox1.Text = cbx End Sub
Private Sub ComboBox4_KeyPress(sender As Object, e As KeyPressEventArgs) Handles ComboBox4.KeyPress e.keyChar = string.empty End Sub