No creo que las respuestas hasta ahora sean del todo correctas: la longitud de la cadena representada (y esto es lo que necesita cuando toma en cuenta las dimensiones de su botón) puede variar según la fuente y los caracteres que utilizar. El uso de una fuente proporcional como Microsoft Sans Serif
devolverá diferentes dimensiones para cadenas que contienen el mismo número de caracteres cuando estos caracteres difieren, por ejemplo .:
"iiiiiiiiii" no es tan amplia como
"wwwwwwwwww".
se debe utilizar el método de MeasureString
de la clase `Gráficos
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);
Esto funciona muy bien, una cosa que noté fue si el botón está activado, no se mostrará. Encontrado esto como yo quería poner una razón para que un botón se ha desactivado. – DanO