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他的\她的文本或不能更改数据。

脚步:

  1. select你的combobox。
  2. 转到其属性框并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