2010-10-06 7 views
8

Estoy rellenando los elementos de ComboBox con una lista utilizando el evento Click. Cuando ya está lleno, MaxDropDownItems no está funcionando. ¿Alguien sabe cómo solucionar este problema?ComboBox.MaxDopDownItems no funciona cuando se agregan elementos utilizando el evento Click

Aquí está el código:

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 se establece en 5 por lo que el cuadro combinado debería al menos mostrar 5 artículos solamente: alt text

Respuesta

17

Es necesario configurar el ComboBox.IntegralHeight property a false cuando la configuración de su control (por defecto es true). De MSDN:

Cuando esta propiedad se establece en true, el control cambia automáticamente el tamaño de garantizar que un artículo no está representada parcialmente . Si desea mantener el tamaño original del ComboBox basado en , los requisitos de espacio de su formulario, establecen esta propiedad en falso.

añadir esta línea antes de agregar el cuadro combinado a la Controls colección:

cb.IntegralHeight = false; 
Cuestiones relacionadas