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.