如何防止手动输入到C#中的ComboBox

时间:2012-03-10 17:07:31

标签: c# string combobox

我在C#中有一个使用ComboBox的表单。 如何阻止用户在C#中的ComboBox中手动输入文本?

this.comboBoxType.Font = new System.Drawing.Font("Arial", 15.75F);
this.comboBoxType.FormattingEnabled = true;
this.comboBoxType.Items.AddRange(new object[] {
            "a",
            "b",
            "c"});
this.comboBoxType.Location = new System.Drawing.Point(742, 364);
this.comboBoxType.Name = "comboBoxType";
this.comboBoxType.Size = new System.Drawing.Size(89, 32);
this.comboBoxType.TabIndex = 57;   

我希望A B C是唯一的选择。

9 个答案:

答案 0 :(得分:115)

只需将您的组合设置为DropDownList:

this.comboBoxType.DropDownStyle = ComboBoxStyle.DropDownList;

答案 1 :(得分:14)

我相信你想把DropDownStyle设置为DropDownList。

this.comboBoxType.DropDownStyle = 
    System.Windows.Forms.ComboBoxStyle.DropDownList;

答案 2 :(得分:7)

您可以在KeyPress活动中添加e.Handled = true

private void Combo1_KeyPress(object sender, KeyPressEventArgs e)
    {
        e.Handled = true;
    }

答案 3 :(得分:7)

从控件的属性窗口中,使 DropDownStyle 等于 DropDownList

答案 4 :(得分:1)

为什么要使用ComboBox?

C#有一个名为Listbox的控件。从技术上讲,ComboBox在Listbox上的区别在于ComboBox可以接收输入,所以如果它不是您需要的控件,那么我建议您使用ListBox

列表框消费指南:C# ListBox

答案 5 :(得分:1)

只需将属性DropDownStyle设置为DropDownList Look this picture Exemple

即可

答案 6 :(得分:1)

我希望保留手动插入内容的功能,但将所选内容限制为列表中的内容。 我将此事件添加到ComboBox。只要您获得了SelectedItem而不是Text,您就会获得正确的预定义项目。 a,b和c。

private void cbx_LostFocus(object sender, EventArgs e)
{
  if (!(sender is ComboBox cbx)) return;
  int i;
  cbx.SelectedIndex = (i = cbx.FindString(cbx.Text)) >= 0 ? i : 0;
}

答案 7 :(得分:0)

这会锁定Combobox手动输入并仅显示组合列表项目

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

答案 8 :(得分:-1)

private void cmbDatesShipment_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = true;
}