web-dev-qa-db-ja.com

C#でComboBoxへの手動入力を防ぐ方法

ComboBoxを使用するC#のフォームがあります。ユーザーが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だけがオプションになります。

45
Iakovl

コンボをDropDownListとして設定するだけです:

this.comboBoxType.DropDownStyle = ComboBoxStyle.DropDownList;
123
Reinaldo

DropDownStyleをDropDownListに設定したいと思います。

this.comboBoxType.DropDownStyle = 
    System.Windows.Forms.ComboBoxStyle.DropDownList;
14
Justin Pihony

あなたは付け加えられます e.Handled = true KeyPressイベントで:

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

コントロールのプロパティウィンドウで、DropDownStyleと等しいDropDownListを作成します。

7
Doicare

プロパティDropDownStyleをDropDownListに設定するだけです この図を見てください

1
Virgilio Cossa

手動でアイテムを挿入する機能を維持したいのですが、選択したアイテムをリストにあるものに制限します。このイベントをComboBoxに追加します。 TextではなくSelectedItemを取得する限り、正しい定義済みアイテムを取得できます。 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;
}
1
Tates

なぜComboBoxを使用するのですか?

C#には Listbox というコントロールがあります。技術的には、ComboBoxのリストボックスとの違いは、ComboBoxが入力を受け取ることができることです。したがって、必要なコントロールでない場合は、ListBoxを使用することをお勧めします。

ここでのリストボックス消費ガイド: C#ListBox

1
DevEstacion

これにより、コンボボックスの手動入力がロックされ、コンボボックスリストの項目のみが表示されます

this.yourcomboBoxname.DropDownStyle = ComboBoxStyle.DropDownList;
0
Adumuah Dowuona