Умная упаковка слишком умна для ваших целей. Просто сохраните Multiline
, выключите WordWrap
и оберните текст самостоятельно:
public IEnumerable<string> SimpleWrap(string line, int length)
{
var s = line;
while (s.Length > length)
{
var result = s.Substring(0, length);
s = s.Substring(length);
yield return result;
}
yield return s;
}
Обновление:
Оценка количества символов, которые могут поместиться в TextBox
с использованием шрифта фиксированной ширины:
public int GetMaxChars(TextBox tb)
{
using (var g = CreateGraphics())
{
return (int)Math.Floor(tb.Width / (g.MeasureString("0123456789", tb.Font).Width / 10));
}
}
Шрифт переменной ширины сложнее, но его можно сделать с помощью MeasureCharacterRanges
.