2010-04-29 4 views
2

J'ai un ToolStrip avec un contrôle ToolStripComboBox dessus, et je voudrais qu'il autosize pour adapter l'article le plus large dans la liste déroulante. Comment puis-je accomplir cela? La propriété "Autosize" est définie sur "true", mais cela ne semble pas faire de différence. Je me suis cogné la tête dessus pendant un moment. Est-ce même possible?ToolStripComboBox - autosize aux éléments

Répondre

0

Selon cet article msdn AutoSize Property Overview seuls certains des contrôles prennent en charge la propriété AutoSize. ComboBox n'a pas de support AutoSize.

+1

Ce n'est pas très utile ... Merci MS. – rotard

6

J'ai eu le même problème. Ma solution était de modifier la taille de l'événement DropDown. Vous pouvez passer une largeur maximale dans la chaîne MeasureString ou vous limiter à maxWidth avant de définir DropDownWidth.

private void m_comboBox_DropDown(object sender, EventArgs e) 
{ 
    using (System.Drawing.Graphics graphics = CreateGraphics()) 
    { 
     int maxWidth = 0; 
     foreach (object obj in m_comboBox.Items) 
     { 
      System.Drawing.SizeF area = graphics.MeasureString(obj.ToString(), m_comboBox.Font); 
      maxWidth = Math.Max((int)area.Width, maxWidth); 
     } 
     m_comboBox.DropDownWidth = maxWidth; 
    } 
} 
+0

Fonctionne bien, mais prend une seconde entière pour 10.000 articles. – Carra