我有一些文本框只允许包含一定数量的字符,例如在大多数情况下为12或14。
是否可以将文本框动态调整为12个字符或14个字符的宽度,具体取决于单词?
答案 0 :(得分:0)
我不确定我是否理解你的问题,但是对于给定的字符串,您可以同时设置TextBox的Text
和Width
属性,如下面的示例方法。
它从给定文本和TextBox的所有与字体相关的属性创建FormattedText对象。然后它将一个空字符串分配给TextBox以获得“空”宽度(这也应该可以通过添加左右填充,左右边框粗细等)。最后,该方法分配Text
属性并将Width
设置为empy宽度加上FormattedText的宽度。
public void SetTextAndWidth(TextBox textBox, string text)
{
Typeface typeface = new Typeface(
textBox.FontFamily, textBox.FontStyle, textBox.FontWeight, textBox.FontStretch);
FormattedText formattedText = new FormattedText(text, CultureInfo.InvariantCulture,
FlowDirection.LeftToRight, typeface, textBox.FontSize, Brushes.Black);
if (textBox.HorizontalAlignment == HorizontalAlignment.Stretch)
{
textBox.HorizontalAlignment = HorizontalAlignment.Left;
}
textBox.Text = "";
double emptyWidth = textBox.ActualWidth;
textBox.Text = text;
textBox.Width = formattedText.Width + emptyWidth;
}
答案 1 :(得分:0)
总是有TextRenderer.MeasureText方法。
只要您不介意使用表单DLL。
或图形库辅助方法Graphics.MeasureString。
然后,您可以使用此信息进行各种调整,查看MSDN条目中的示例。