2010-06-22 17 views
1

J'utilise ce code sympa qui, soit dit en passant, si vous êtes au courant d'un meilleur moyen d'y parvenir, j'apprécie vraiment de nous le faire savoir. donc est ici la barre d'outils qui peut flotter:Une barre d'outils qui peut se dimensionner automatiquement

http://en.csharp-online.net/Tool,_Menu,_and_Status_Strips%E2%80%94Floating_ToolStrips

bien, mais si je n'ai 4 boutons de cette barre d'outils, quand je fais flotter est toujours la même taille que il a été amarré à la station former avant mais je souhaite qu'il pourrait se redimensionner et être juste aussi longtemps qu'il doit être pour montrer ses boutons sur elle.

Répondre

1
m_floatForm.AutoSize = True 
    m_floatForm.AutoSizeMode = AutoSizeMode.GrowAndShrink 
1

Vous pouvez ajouter les largeurs des différents éléments de la barre d'outils et l'utiliser comme largeur de votre formulaire.

Remplacer ceci:

floatForm.ClientSize = this.Size; 

avec ceci:

//Adjust min value for your needs. It should account for the width of the 
//toolstrip, borders, etc. 
int minWidth = 20; 

int newWidth = minWidth; 
foreach (ToolStripItem item in this.Items) 
{ 
    newWidth += item.Size.Width; 
} 
floatForm.ClientSize = new Size(newWidth, this.Size.Height); 
0

PreferredSize a fait l'affaire pour moi. Je ne m'attendais pas à travailler sur un ToolStip, mais il le fait, au moins sur. Net 4.5.

Je devais encore ajouter un nombre fixe pour tenir compte de quelques pixels dont je ne suis pas sûr d'où ils viennent.

this.Width = toolStrip.PreferredSize.Width + toolStrip.Margin.Horizontal + toolStrip.Parent.Margin.Horizontal + toolStrip.Parent.Padding.Horizontal+20;