Я не думаю, что ответы пока вполне правильные - длина отображаемой строки (и это то, что вам нужно, когда вы также учитываете размеры кнопки), может варьироваться в зависимости от шрифта и символов, которые вы используете. , Использование пропорционального шрифта, такого как Microsoft Sans Serif
, будет возвращать разные размеры для строк, содержащих одинаковое количество символов, если эти символы различаются, например ::10000
"iiiiiiiiii" не такой широкий, как
"wwwwwwwwww".
Вы должны использовать MeasureString
метод `Graphics class
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 );