Использование MaxLength
EDIT:
Подожди, что? Вы хотите ограничить количество символов шириной TextBox? Почему это?
EDIT2:
Вы можете измерить длину строки, используя Graphics.MeasureString . Вот метод расширения, который делает то, что вы хотите:
public static class TextBoxExtension
{
public static int VisibleCharCount(this textBox textBox)
{
int count = 0;
do {
count++;
var testString = new string('X', count);
var stringWidth = System.Drawing.Graphics.MeasureString(testString, textBox.Font);
} while (stringWidth < textBox.Width);
if (stringWidth == textBox.Width)
return count;
else
return count-1;
}
}
Используйте это так:
myTextBox.MaxLength = myTextBox.VisibleCharCount();
EDIT3:
Если ваш TexBox является MultiLine и вы также хотите учесть высоту, вы можете использовать перегрузку MeasureString, которая принимает Size. Я оставляю на ваше усмотрение изменить мой пример соответствующим образом.