web-dev-qa-db-ja.com

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

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

146
Mobin

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

comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
282
Dan Walker

これは、DropDownSyleDropDownListに変更すると3Dに見え、時には見た目が悪くなるため、私が使用する別の方法です。

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

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

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

2
Sumit Agrawal

前述のように、コンボボックスのプロパティで「DropDownStyle」を「DropDownList」に変更できます。

DropDownStyle Property

1
FUSION CHA0S

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()
    
0
Sushil Jadhav