Bagaimana cara menonaktifkan pengeditan elemen dalam kotak kombo untuk c #?


157

Saya memiliki beberapa elemen dalam ComboBox (WinForms dengan C #). Saya ingin kontennya statis sehingga pengguna tidak dapat mengubah nilai-nilai di dalamnya ketika aplikasi dijalankan. Saya juga tidak ingin pengguna menambahkan nilai baru ke ComboBox

Jawaban:


300

Gunakan properti ComboStyle:

comboBox.DropDownStyle = ComboBoxStyle.DropDownList;

38
Ini juga dapat diatur di jendela properti desainer.
Jeffrey

3
Dengan versi terbaru, Anda dapat menggunakancombo.Properties.TextEditStyle = DisableTextEditor
Keysharpener

21

Ini adalah metode lain yang saya gunakan karena mengubah DropDownSyleagar DropDownListterlihat 3D dan kadang-kadang hanya jelek.

Anda dapat mencegah input pengguna dengan menangani KeyPressacara ComboBox seperti ini.

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

4
Anda dapat mengubah penampilannya di perancang, FlatStyle :)
StinkyCat

3
@StinkyCat Itu tidak mengubah tampilan daftar yang muncul, hanya kontrol dalam formulir.
Logar

Anda harus menangani menu klik kanan di mana Anda memiliki opsi Pastejuga. Saya tidak tahu bagaimana sekarang.
Sinatr

3
Ok, untuk menghapus PasteAnda harus membuat menu konteks kosong palsu dan menetapkannya ke ComboBox.
Sinatr

7

Yow dapat mengubah properti DropDownStyle menjadi DropDownList. Ini tidak akan menampilkan TextBox untuk filter.

Properti DropDownStyle
(Cuplikan layar disediakan oleh FUSION CHA0S .)


0

Saya mencoba ComboBox1_KeyPress tetapi memungkinkan untuk menghapus karakter & Anda juga dapat menggunakan perintah copy paste. DropDownStyle saya diatur ke DropDownList tetapi masih tidak digunakan. Jadi saya lakukan di bawah ini langkah untuk menghindari pengeditan teks combobox.

  • Kode di bawah ini menangani tombol delete & backspace. Dan juga menonaktifkan kombinasi dengan tombol kontrol (mis. Ctr + C atau 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
  • Dalam bentuk beban gunakan baris di bawah ini untuk menonaktifkan klik kanan pada kontrol combobox untuk menghindari cut / paste melalui klik mouse.

    CmbxInType.ContextMenu = new ContextMenu()
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.