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.