2010-10-06 5 views
8

Sto compilando gli elementi di ComboBox con un elenco utilizzando l'evento Click. Quando è già popolato, MaxDropDownItems non funziona. Qualcuno sa come risolvere questo?ComboBox.MaxDopDownItems non funziona quando si aggiungono elementi utilizzando l'evento Click

Ecco il codice:

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 è impostato a 5 in modo che il combobox dovrebbe atleast mostrare solo 5 articoli: alt text

risposta

17

È necessario impostare la ComboBox.IntegralHeight property-false quando si imposta il controllo (il valore predefinito è true). Da MSDN:

Quando questa proprietà è impostata su true, il controllo ridimensiona automaticamente assicurare che un elemento non è parzialmente visualizzata. Se si desidera mantenere la dimensione originale di del ComboBox in base a i requisiti di spazio del modulo, impostare questa proprietà su falso.

Aggiungi questa linea prima di aggiungere la casella combinata alla raccolta Controls:

cb.IntegralHeight = false;