Question

J'ai un ToolStrip avec un contrôle ToolStripComboBox sur elle, et je voudrais qu'il autoSize pour adapter l'élément le plus large dans la liste déroulante. Comment puis-je accomplir cela? La propriété « Autosize » est réglé sur « true », mais il ne semble pas faire de différence. J'ai frappais ma tête sur ce pendant un certain temps. Est-il même possible?

Était-ce utile?

La solution

Selon cet article msdn AutoSize Aperçu de la propriété seulement certains les contrôles prennent en charge la propriété AutoSize. ComboBox n'a pas le support AutoSize.

Autres conseils

J'ai eu le même problème. Ma solution a été de modifier la taille de l'événement DropDown. Vous pouvez passer une largeur maximale dans la MeasureString ou pince maxWidth-vous avant de définir le 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;
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top