C # için birleşik giriş kutusundaki öğelerin düzenlenmesini devre dışı bırakmak nasıl?


157

ComboBox (C # ile WinForms) bazı öğeler var. Ben bir kullanıcı uygulama çalıştırıldığında içindeki değerleri değiştiremez, böylece onların içeriği statik olmasını istiyorum. Ayrıca kullanıcının ComboBox'a yeni değerler eklemesini istemiyorum

Yanıtlar:


300

ComboStyle özelliğini kullanın:

comboBox.DropDownStyle = ComboBoxStyle.DropDownList;

38
Bu, tasarımcının özellikler penceresinde de ayarlanabilir.
Jeffrey

3
Son sürümleri kullanabilirsinizcombo.Properties.TextEditStyle = DisableTextEditor
Keysharpener

21

Bu değişen çünkü Kullandığım başka yöntemdir DropDownSyleiçin DropDownListbazen 3D ve onun sadece düz çirkin görünmesini sağlar.

KeyPressComboBox olayını bu şekilde işleyerek kullanıcı girişini önleyebilirsiniz .

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

4
Tasarımcı FlatStyle'da görünümünü değiştirebilirsiniz :)
StinkyCat

3
@StinkyCat Açılan listenin görünümünü değiştirmez, yalnızca formdaki denetimi değiştirir.
Logarr

Seçeneğinizin bulunduğu sağ tıklama menüsünü de işlemeniz gerekir Paste. Şu anda nasıl olduğu hakkında hiçbir fikrim yok.
Sinatr

3
Tamam, kaldırmak Pasteiçin sahte boş bağlam menüsü oluşturmanız ve ComboBox'a atamanız gerekir.
Nisan'ta Sinatr

7

Yow, özelliklerde DropDownStyle öğesini DropDownList olarak değiştirebilir. Bu filtre için TextBox'ı göstermez.

DropDownStyle Özelliği
(Ekran görüntüsü FUSION CHA0S tarafından sağlanmıştır .)


0

ComboBox1_KeyPress'i denedim ama karakteri silmeye izin veriyor ve kopyala yapıştır komutunu da kullanabilirsiniz. DropDownStyle'ım DropDownList olarak ayarlanmış, ancak yine de faydası yok. Bu yüzden combobox metin düzenlemesinden kaçınmak için aşağıdaki adımı attım.

  • Aşağıdaki kod silme ve geri silme tuşlarını işler. Ayrıca kontrol tuşuyla (örn. Ctr + C veya ctr + X) kombinasyonu devre dışı bırakır

     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
  • Form yükünde, fare tıklaması ile kes / yapıştırmayı önlemek için combobox kontrolüne sağ tıklamayı devre dışı bırakmak için aşağıdaki satırı kullanın.

    CmbxInType.ContextMenu = new ContextMenu()
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.