Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将WPF文本框长度调整为报表文本框中允许的最大字符数_C#_Wpf_Algorithm - Fatal编程技术网

C# 将WPF文本框长度调整为报表文本框中允许的最大字符数

C# 将WPF文本框长度调整为报表文本框中允许的最大字符数,c#,wpf,algorithm,C#,Wpf,Algorithm,我知道这可能是一个很难回答的问题,但我被要求找到一个负担得起的解决方案,我不知道从哪里开始寻找。 我有一个现有的报告,它是通过Word制作的,有一个可替换的文本,其中包含通过WPF应用程序作为输入插入的数据 现在,由于WPF部分目前没有长度控制,如果我放置更多的字符,那么当前可见的字符将丢失。我需要一种基于固定字体长度的方法来计算允许的平均字符数 并非所有字符的宽度都相同,例如“O”大于“i”;我的想法是计算可以插入的最大O数,最大i数,然后做一个平均值。从该值中减去15%以获得安全值。有更好的

我知道这可能是一个很难回答的问题,但我被要求找到一个负担得起的解决方案,我不知道从哪里开始寻找。 我有一个现有的报告,它是通过Word制作的,有一个可替换的文本,其中包含通过WPF应用程序作为输入插入的数据

现在,由于WPF部分目前没有长度控制,如果我放置更多的字符,那么当前可见的字符将丢失。我需要一种基于固定字体长度的方法来计算允许的平均字符数

并非所有字符的宽度都相同,例如“O”大于“i”;我的想法是计算可以插入的最大O数,最大i数,然后做一个平均值。从该值中减去15%以获得安全值。有更好的方法吗

提前感谢

您可以尝试使用。收听TextBox.TextChanged事件,并在到达TextBox.MaxLength后测量文本:

或者,您也可以创建一个由已知最宽字符组成的格式化文本。我认为大多数情况下,使用TextBox.MaxLength使用您选择的
使用字体,然后使用FormattedText.Width初始化TextBox.Width。

到目前为止您尝试了什么?请分享你的代码,这个问题毫无意义。您想要计算文本框中可见文本大小的方法吗?或者您需要设置MaxLength属性吗?我需要一个方法来计算报表文本框最大字符的大小,这样我就可以将它放在我的WPF文本框中。我知道如何设置最大长度
private void OnTextBoxTextChanged(object sender, EventArgs e)
{
  var textBox = sender as TextBox;
  if (textBox.Text.Length == textBox.MaxLength)
  {
    // Create a formatted text string that has the max number of allowed characters.
    // and has therefore reached its maximum length
    FormattedText formattedText = new FormattedText(
        textBox.Text,
        CultureInfo.GetCultureInfo("en-us"),
        FlowDirection.LeftToRight,
        new Typeface("Verdana"),
        32,
        Brushes.Black);

   textBox.Text.Width = formattedText.Width;
}