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
2
A
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.
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
Ce n'est pas très utile ... Merci MS. – rotard