2010-10-06 3 views
8

Ich füllen die ComboBox-Elemente mit einer Liste mithilfe des Click-Ereignisses. Wenn es bereits ausgefüllt ist, funktioniert das MaxDropDownItems nicht. Kann jemand diesen reparieren?ComboBox.MaxDopDownItems funktioniert nicht beim Hinzufügen von Elementen mit dem Click-Ereignis

Hier ist der Code:

List<string> list = new List<string>(); 
    ComboBox cb; 
    private void button1_Click(object sender, EventArgs e) 
    { 
     cb = new ComboBox(); 

     cb.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
     cb.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 
     cb.FormattingEnabled = true; 
     cb.Size = new System.Drawing.Size(94, 21); 
     cb.MaxDropDownItems = 5; 
     cb.Click +=new EventHandler(cb_Click); 

     this.Controls.Add(cb); 
    } 

    private void cb_Click(object sender, EventArgs e) 
    { 
     foreach (string str in list) 
     { 
      cb.Items.Add(str); 
     } 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     list.Add("1");list.Add("2");list.Add("3"); 
     list.Add("4");list.Add("5");list.Add("6"); 
     list.Add("7"); 
    } 

MaxDropDownItems bis 5 so sollte die Combobox nur atleast 5 Veröffentlichungen gesetzt: alt text

Antwort

17

Sie müssen die ComboBox.IntegralHeight property-false, wenn Sie Setup Ihrer Kontrolle einzustellen (Standard ist true). Von MSDN:

Wenn diese Eigenschaft auf true gesetzt ist, automatisch die Kontrolle ändert die Größe sicherzustellen, dass ein Artikel nicht teilweise angezeigt ist. Wenn Sie die Originalgröße der ComboBox basierend auf die Speicherplatzanforderungen Ihres Formulars beibehalten möchten, setzen Sie diese Eigenschaft auf auf false.

diese Zeile hinzufügen, bevor Sie die Combobox zum Controls Sammlung:

cb.IntegralHeight = false;