Je ne pense pas que les réponses à ce jour soient tout à fait correctes - la longueur de la chaîne rendue (et c'est ce dont vous avez besoin lorsque vous prenez en compte les dimensions de votre bouton) peut varier en fonction de la police utilisation. En utilisant une police proportionnelle telle que Microsoft Sans Serif
retournera différentes dimensions pour les chaînes contenant le même nombre de caractères lorsque ces caractères diffèrent, par exemple .:
« iiiiiiiiii » est pas aussi large que
« wwwwwwwwww ».
Vous devez utiliser la méthode MeasureString
de la classe `Graphics
Graphics grfx = Graphics.FromImage(new Bitmap(1, 1));
// Set a proportional font
button1.Font = new Font("Microsoft Sans Serif", 8.25f, FontStyle.Regular);
SizeF bounds = grfx.MeasureString(
button1.Text,
button1.Font,
new PointF(0, 0),
new StringFormat(StringFormatFlags.MeasureTrailingSpaces));
MessageBox.Show("Text dimensions: " + bounds.Width + "x" + bounds.Height);
// Set a non-proportional font
button1.Font = new Font("Courier New", 8.25f, FontStyle.Regular);
bounds = grfx.MeasureString(
button1.Text,
button1.Font,
new PointF(0, 0),
new StringFormat(StringFormatFlags.MeasureTrailingSpaces));
MessageBox.Show("Text dimensions: " + bounds.Width + "x" + bounds.Height);
Cela fonctionne très bien, une chose que je remarqué était si le bouton est activé, il ne sera pas affiché. J'ai découvert cela parce que je voulais mettre une raison pour laquelle un bouton était désactivé. – DanO