Wpf TextBox MaxLength属性正在计算空白

Wpf TextBox MaxLength属性正在计算空白,wpf,textbox,whitespace,maxlength,Wpf,Textbox,Whitespace,Maxlength,“我的文本框”的MaxLength属性设置了100个字符的限制 但是,如果用户键入“\n”或“\t”,它们将被视为一个附加字符,这对程序员有意义,但对用户没有意义 除了自己计算字符数,还有什么解决办法吗?您可以创建自己的附加属性: <TextBox wpfApplication4:TextBoxBehaviors.MaxLengthIgnoringWhitespace="10" /> 代码将使用文本框现有的MaxLength属性,并将其增加您输入的空格数。因此,如果将属性设置为10

“我的文本框”的MaxLength属性设置了100个字符的限制

但是,如果用户键入“\n”或“\t”,它们将被视为一个附加字符,这对程序员有意义,但对用户没有意义


除了自己计算字符数,还有什么解决办法吗?

您可以创建自己的附加属性:

<TextBox wpfApplication4:TextBoxBehaviors.MaxLengthIgnoringWhitespace="10" />

代码将使用文本框现有的MaxLength属性,并将其增加您输入的空格数。因此,如果将属性设置为10并键入5个空格,则文本框上的实际MaxLength将设置为15,依此类推。

您可以创建自己的附加属性:

<TextBox wpfApplication4:TextBoxBehaviors.MaxLengthIgnoringWhitespace="10" />

代码将使用文本框现有的MaxLength属性,并将其增加您输入的空格数。因此,如果将属性设置为10并键入5个空格,则文本框上的实际MaxLength将设置为15,依此类推。

您可以创建自己的附加属性:

<TextBox wpfApplication4:TextBoxBehaviors.MaxLengthIgnoringWhitespace="10" />

代码将使用文本框现有的MaxLength属性,并将其增加您输入的空格数。因此,如果将属性设置为10并键入5个空格,则文本框上的实际MaxLength将设置为15,依此类推。

您可以创建自己的附加属性:

<TextBox wpfApplication4:TextBoxBehaviors.MaxLengthIgnoringWhitespace="10" />

代码将使用文本框现有的MaxLength属性,并将其增加您输入的空格数。因此,如果将属性设置为10并键入5个空格,则文本框上的实际最大长度将设置为15,依此类推。

我非常喜欢
Toby Crawford
答案,但由于我开始尝试一个简单的答案,我喜欢添加我的答案:

 public partial class MainWindow : Window
    {
        public string TextLength { get; set; }
        public MainWindow()
        {
            InitializeComponent();
        }

        private void txtInput_TextChanged(object sender, TextChangedEventArgs e)
        {
            var textbox = sender as TextBox;
            var tempText = textbox.Text.Replace(" ", "");
            lblLength.Content = (tempText.Length).ToString();
        }
    }
       <Grid>
            <TextBox HorizontalAlignment="Left" Name="txtInput" MaxLength="{Binding TextMaxLength}" Height="23" Margin="220,67,0,0" TextWrapping="Wrap" Text="" TextChanged="txtInput_TextChanged" VerticalAlignment="Top" Width="120"/>
            <Label Name="lblLength"  HorizontalAlignment="Left" VerticalAlignment="Top" Margin="220,126,0,0"/>
            <Label Content="Your text length" HorizontalAlignment="Left" Margin="93,126,0,0" VerticalAlignment="Top"/>
            <Label Content="Your text" HorizontalAlignment="Left" Margin="93,67,0,0" VerticalAlignment="Top"/>

        </Grid>
公共部分类主窗口:窗口
{
公共字符串TextLength{get;set;}
公共主窗口()
{
初始化组件();
}
私有void txtInput_TextChanged(对象发送方,TextChangedEventArgs e)
{
var textbox=发送方作为textbox;
var testext=textbox.Text.Replace(“,”);
lblLength.Content=(testext.Length.ToString();
}
}

我真的很喜欢
托比·克劳福德的回答
但由于我开始尝试一个简单的答案,我想补充我的答案:

 public partial class MainWindow : Window
    {
        public string TextLength { get; set; }
        public MainWindow()
        {
            InitializeComponent();
        }

        private void txtInput_TextChanged(object sender, TextChangedEventArgs e)
        {
            var textbox = sender as TextBox;
            var tempText = textbox.Text.Replace(" ", "");
            lblLength.Content = (tempText.Length).ToString();
        }
    }
       <Grid>
            <TextBox HorizontalAlignment="Left" Name="txtInput" MaxLength="{Binding TextMaxLength}" Height="23" Margin="220,67,0,0" TextWrapping="Wrap" Text="" TextChanged="txtInput_TextChanged" VerticalAlignment="Top" Width="120"/>
            <Label Name="lblLength"  HorizontalAlignment="Left" VerticalAlignment="Top" Margin="220,126,0,0"/>
            <Label Content="Your text length" HorizontalAlignment="Left" Margin="93,126,0,0" VerticalAlignment="Top"/>
            <Label Content="Your text" HorizontalAlignment="Left" Margin="93,67,0,0" VerticalAlignment="Top"/>

        </Grid>
公共部分类主窗口:窗口
{
公共字符串TextLength{get;set;}
公共主窗口()
{
初始化组件();
}
私有void txtInput_TextChanged(对象发送方,TextChangedEventArgs e)
{
var textbox=发送方作为textbox;
var testext=textbox.Text.Replace(“,”);
lblLength.Content=(testext.Length.ToString();
}
}

我真的很喜欢
托比·克劳福德的回答
但由于我开始尝试一个简单的答案,我想补充我的答案:

 public partial class MainWindow : Window
    {
        public string TextLength { get; set; }
        public MainWindow()
        {
            InitializeComponent();
        }

        private void txtInput_TextChanged(object sender, TextChangedEventArgs e)
        {
            var textbox = sender as TextBox;
            var tempText = textbox.Text.Replace(" ", "");
            lblLength.Content = (tempText.Length).ToString();
        }
    }
       <Grid>
            <TextBox HorizontalAlignment="Left" Name="txtInput" MaxLength="{Binding TextMaxLength}" Height="23" Margin="220,67,0,0" TextWrapping="Wrap" Text="" TextChanged="txtInput_TextChanged" VerticalAlignment="Top" Width="120"/>
            <Label Name="lblLength"  HorizontalAlignment="Left" VerticalAlignment="Top" Margin="220,126,0,0"/>
            <Label Content="Your text length" HorizontalAlignment="Left" Margin="93,126,0,0" VerticalAlignment="Top"/>
            <Label Content="Your text" HorizontalAlignment="Left" Margin="93,67,0,0" VerticalAlignment="Top"/>

        </Grid>
公共部分类主窗口:窗口
{
公共字符串TextLength{get;set;}
公共主窗口()
{
初始化组件();
}
私有void txtInput_TextChanged(对象发送方,TextChangedEventArgs e)
{
var textbox=发送方作为textbox;
var testext=textbox.Text.Replace(“,”);
lblLength.Content=(testext.Length.ToString();
}
}

我真的很喜欢
托比·克劳福德的回答
但由于我开始尝试一个简单的答案,我想补充我的答案:

 public partial class MainWindow : Window
    {
        public string TextLength { get; set; }
        public MainWindow()
        {
            InitializeComponent();
        }

        private void txtInput_TextChanged(object sender, TextChangedEventArgs e)
        {
            var textbox = sender as TextBox;
            var tempText = textbox.Text.Replace(" ", "");
            lblLength.Content = (tempText.Length).ToString();
        }
    }
       <Grid>
            <TextBox HorizontalAlignment="Left" Name="txtInput" MaxLength="{Binding TextMaxLength}" Height="23" Margin="220,67,0,0" TextWrapping="Wrap" Text="" TextChanged="txtInput_TextChanged" VerticalAlignment="Top" Width="120"/>
            <Label Name="lblLength"  HorizontalAlignment="Left" VerticalAlignment="Top" Margin="220,126,0,0"/>
            <Label Content="Your text length" HorizontalAlignment="Left" Margin="93,126,0,0" VerticalAlignment="Top"/>
            <Label Content="Your text" HorizontalAlignment="Left" Margin="93,67,0,0" VerticalAlignment="Top"/>

        </Grid>
公共部分类主窗口:窗口
{
公共字符串TextLength{get;set;}
公共主窗口()
{
初始化组件();
}
私有void txtInput_TextChanged(对象发送方,TextChangedEventArgs e)
{
var textbox=发送方作为textbox;
var testext=textbox.Text.Replace(“,”);
lblLength.Content=(testext.Length.ToString();
}
}

为什么只添加一个文本更改?为什么只添加一个文本更改?为什么只添加一个文本更改?为什么只添加一个文本更改?为什么只添加一个文本更改?为什么只添加一个文本更改?为什么只添加一个文本更改?为什么只添加一个文本更改?为什么不添加文本长度