<TextBox Height="?" Width="?" AcceptReturn="true" />
Height = Random; Ширина = случайный; Например, высота 60, ширина 100. Как контролировать lentgh занесены текста меньше, чем размер TextBoxwpf, как ограничить MaxLength TextBox?
<TextBox Height="?" Width="?" AcceptReturn="true" />
Height = Random; Ширина = случайный; Например, высота 60, ширина 100. Как контролировать lentgh занесены текста меньше, чем размер TextBoxwpf, как ограничить MaxLength TextBox?
Использование 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, которая принимает размер. Я оставляю это для вас, чтобы соответствующим образом изменить свой пример.
Используйте MaxLength недвижимость на TextBox
, который может быть довольно статическим после инициализации.
ИЛИ
Вы можете отменить ввод текста с PreviewTextInput
события:
textbox.PreviewTextInput += textbox_PreviewTextInput;
void textbox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
TextBox box = (TextBox) sender;
e.Handled = box.Text.Length > 5;
}
Это формы, а не WPF – Arcturus 2010-12-02 12:41:46
Это шаблон report.user может сделать TextBox. Ограничить это, чтобы избежать проблемы с печатью. – doull 2010-12-02 13:03:09