如何将文本框动态调整为一定数量字符的宽度?

时间:2012-08-27 07:51:03

标签: c# wpf xaml

我有一些文本框只允许包含一定数量的字符,例如在大多数情况下为12或14。

是否可以将文本框动态调整为12个字符或14个字符的宽度,具体取决于单词?

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题,但是对于给定的字符串,您可以同时设置TextBox的TextWidth属性,如下面的示例方法。

它从给定文本和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条目中的示例。