C# 将WPF文本框长度调整为报表文本框中允许的最大字符数
我知道这可能是一个很难回答的问题,但我被要求找到一个负担得起的解决方案,我不知道从哪里开始寻找。 我有一个现有的报告,它是通过Word制作的,有一个可替换的文本,其中包含通过WPF应用程序作为输入插入的数据 现在,由于WPF部分目前没有长度控制,如果我放置更多的字符,那么当前可见的字符将丢失。我需要一种基于固定字体长度的方法来计算允许的平均字符数 并非所有字符的宽度都相同,例如“O”大于“i”;我的想法是计算可以插入的最大O数,最大i数,然后做一个平均值。从该值中减去15%以获得安全值。有更好的方法吗 提前感谢您可以尝试使用。收听TextBox.TextChanged事件,并在到达TextBox.MaxLength后测量文本: 或者,您也可以创建一个由已知最宽字符组成的格式化文本。我认为大多数情况下,使用TextBox.MaxLength使用您选择的C# 将WPF文本框长度调整为报表文本框中允许的最大字符数,c#,wpf,algorithm,C#,Wpf,Algorithm,我知道这可能是一个很难回答的问题,但我被要求找到一个负担得起的解决方案,我不知道从哪里开始寻找。 我有一个现有的报告,它是通过Word制作的,有一个可替换的文本,其中包含通过WPF应用程序作为输入插入的数据 现在,由于WPF部分目前没有长度控制,如果我放置更多的字符,那么当前可见的字符将丢失。我需要一种基于固定字体长度的方法来计算允许的平均字符数 并非所有字符的宽度都相同,例如“O”大于“i”;我的想法是计算可以插入的最大O数,最大i数,然后做一个平均值。从该值中减去15%以获得安全值。有更好的
使用字体,然后使用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;
}