.NETでComboBoxを編集不可にするにはどうすればよいですか?


205

ComboBoxユーザーが選択できる項目のリストを提供する「選択のみ」が必要です。ComboBoxコントロールのテキスト部分では入力を無効にする必要があります。

私が最初にこれをグーグルで調べたところ、KeyPressイベントをキャプチャするための過度に複雑で見当違いの提案が出されました。

回答:


378

ComboBoxのテキスト部分を編集不可にするには、DropDownStyleプロパティを "DropDownList"に設定します。ComboBoxは、基本的にユーザーのみが選択できるようになりました。これは、Visual Studioデザイナー、またはC#で次のように実行できます。

stateComboBox.DropDownStyle = ComboBoxStyle.DropDownList;

MSDNのComboBox DropDownStyleプロパティのドキュメントへのリンク。


8
これを行うことを覚えておくべきことの1つは、Textプロパティをプログラムで更新できなくなったことを意味します。これを使用して、デフォルトのメッセージを表示しましたComboBox.SelectedIndex = -1;
Lankymart

コードで編集せずに、Visual C#のGUIでこれを行う方法はありますか?「デフォルト値」は通常設定する必要があるようです
muzzlator

6
灰色の外観を回避するにはどうすればよいですか?
AndersLindén2016年

2
@AndersLindénは、FlatStyleプロパティをFlatに設定します。
Xam

@Xamでは、境界線はどこに行くのでしょうか。少しグーグルするとき、私はそれを許容できるように見せるために自分で描画をしなければならないようです。
アンデルスリンデン

67

Visual Studio GUI参照を追加するにDropDownStyleは、選択したComboBoxのプロパティの下にオプションを見つけることができます。

ここに画像の説明を入力してください

次のように、最初の回答で示された行がForm.Designer.cs InitializeComponent()に自動的に追加されます。

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

33

ComboBoxをそのままにして、プロパティウィンドウからDropDropStyleプロパティを検索し、DropDownListを選択します。



1

選択後も入力にデータを表示し続けるには、次のようにします。

VB.NET
Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress
    e.Handled = True
End Sub



C#
Private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = true;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.