Bir ComboBox .NET'te düzenlenebilir olmayan nasıl yapabilirim?


205

ComboBoxKullanıcının seçebileceği öğelerin listesini sağlayan "salt seç" seçeneğine sahip olmak istiyorum . Yazım ComboBoxdenetimin metin bölümünde devre dışı bırakılmalıdır .

Bunu ilk kez araştırmam KeyPressolayı yakalamak için aşırı karmaşık, yanlış yönlendirilmiş bir öneriye dönüştü .

Yanıtlar:


378

Bir ComboBox öğesinin metin bölümünü düzenlenemez yapmak için DropDownStyle özelliğini "DropDownList" olarak ayarlayın. ComboBox artık esas olarak kullanıcı için seçilebiliyor. Bunu Visual Studio tasarımcısında veya C # ile şu şekilde yapabilirsiniz:

stateComboBox.DropDownStyle = ComboBoxStyle.DropDownList;

MSDN'deki ComboBox DropDownStyle özelliğinin belgelerine bağlantı .


8
Bunu akılda tutmanız gereken bir şey, Textözelliği artık programlı olarak güncelleyemeyeceğiniz anlamına gelir , bunu kullanarak varsayılan bir mesaj göstermek için kullanıyorduComboBox.SelectedIndex = -1;
Lankymart

Visual C # için GUI aracılığıyla kodda düzenlemek zorunda kalmadan bunu yapmanın bir yolu var mı? Görünüşe göre 'varsayılan değer' kurmak için normal bir şey olurdu
değiştirici

6
Gri görünümden nasıl kaçınırım?
Anders Lindén

2
@ AndersLindén FlatStyle tesisini Flat olarak belirledi.
Xam

@Xam Peki sınır nereye gidiyor? Biraz googling yaparken, kabul edilebilir görünmesi için çizimi kendim yapmak zorundayım.
Anders Lindén

67

Bir Visual Studio GUI başvurusu eklemek için DropDownStyle, seçili ComboBox'ın Özellikleri altındaki seçenekleri bulabilirsiniz :

resim açıklamasını buraya girin

Form.Designer.cs dosyasına ilk yanıtta belirtilen satırı otomatik olarak ekleyecektir InitializeComponent():

this.comboBoxBatch.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;

33

ComboBox'ınızda kalın ve özellikler penceresinden DropDropStyle özelliğini arayın ve ardından DropDownList'i seçin .



1

Seçimden sonra girişte veri göstermeye devam etmek için şunu yapın:

VB.NET
Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress
    e.Handled = True
End Sub



C#
Private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = true;
}
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.