C#のコンボボックスで要素の編集を無効にする方法は?


157

ComboBox(C#を使用したWinForms)にいくつかの要素があります。アプリケーションの実行時にユーザーが内部の値を変更できないように、コンテンツを静的にしたいと考えています。また、ユーザーがComboBoxに新しい値を追加したくない

回答:


300

ComboStyleプロパティを使用します。

comboBox.DropDownStyle = ComboBoxStyle.DropDownList;

38
これは、デザイナーのプロパティウィンドウでも設定できます。
ジェフリー

3
最近のバージョンで使用できますcombo.Properties.TextEditStyle = DisableTextEditor
Keysharpener

21

これは、3Dに見えるように変更DropDownSyleDropDownListたり、場合によっては単に見苦しくなったりするため、私が使用する別の方法です。

KeyPressこのようにComboBox のイベントを処理することで、ユーザー入力を防ぐことができます。

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

4
あなたは、FlatStyle :)デザイナーでそのappearenceを変更することができます
StinkyCat

3
@StinkyCatこれは、ポップアップリストの外観を変更せず、フォーム内のコントロールのみを変更します。
Logarr 2013年

オプションがある場合は、右クリックメニューも処理する必要がありますPaste。今はどうだろう。
Sinatr 2013

3
削除Pasteするには、偽の空のコンテキストメニューを作成し、それをComboBoxに割り当てる必要があります。
Sinatr 2013

7

Yowは、プロパティのDropDownStyleをDropDownListに変更できます。フィルター用のTextBoxは表示されません。

DropDownStyleプロパティ
FUSION CHA0Sが提供するスクリーンショット。)


0

私はComboBox1_KeyPressを試しましたが、文字を削除することができ、コピーと貼り付けのコマンドを使用することもできます。DropDownStyleがDropDownListに設定されていますが、まだ使用されていません。したがって、コンボボックスのテキスト編集を回避するために、以下の手順を実行しました。

  • 以下のコードは、削除とバックスペースキーを処理します。また、コントロールキーとの組み合わせを無効にします(例:ctr + Cまたはctr + X)

     Private Sub CmbxInType_KeyDown(sender As Object, e As KeyEventArgs) Handles CmbxInType.KeyDown
        If e.KeyCode = Keys.Delete Or e.KeyCode = Keys.Back Then 
            e.SuppressKeyPress = True
        End If
    
        If Not (e.Control AndAlso e.KeyCode = Keys.C) Then
            e.SuppressKeyPress = True
        End If
    End Sub
  • フォームの読み込みでは、コンボボックスコントロールでの右クリックを無効にするために、以下の行を使用して、マウスクリックによる切り取り/貼り付けを回避します。

    CmbxInType.ContextMenu = new ContextMenu()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.