【问题标题】:c# wpf textbox - adding a text to input TextBoxc# wpf textbox - 添加文本到输入TextBox
【发布时间】:2017-02-06 13:29:14
【问题描述】:

当用户插入文本时,我想在 wpf TextBox 中的任何输入文本中添加百分号“%”。

所以当用户输入一个数字时,会在输入框中的任意数字上加上%号, 例如: 5 将在文本框中显示为 5% 0 - 0% 100 - 100%

我尝试了以下代码:

<TextBox x:Name="TextBoxInputValue" Text="{Binding AddPercentSign, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0}%}" Style="{StaticResource @TextBoxStyle}" Width="100" Height="20"></TextBox>

和:

public int AddPercentSign{ get; set; }

和:

TextBoxInputValue.DataContext = this;

但是当用户插入输入时它对TextBox没有影响...

我怎样才能达到这个结果?

谢谢

【问题讨论】:

    标签: c# wpf events textbox


    【解决方案1】:

    您可以使用一个标志来决定您是否应该在事件处理程序中实际设置Text 属性:

    private bool _handleEvent = true;
    private void TextChanged(object sender, TextChangedEventArgs e)
    {
        if (_handleEvent)
        {
            _handleEvent = false;
            MyTextBox.Text = MyTextBox.Text + "%$#";
            _handleEvent = true;
        }
    }
    

    【讨论】:

    • 谢谢,这是有效的......但我并不安静......我已经编辑了我的问题
    • 不能把代码改成:MyTextBox.Text = MyTextBox.Text + "%"; ?
    • 没有原因,然后当用户插入例如 12345 我得到:12345%%%%%
    • 尝试使用 @Mike Eason 建议的 StringFormat 绑定到 int/double/decimal 属性。并且一旦回答完毕,请不要完全更改您的原始问题。如果您有其他问题,请提出新问题。
    【解决方案2】:

    如果您要绑定您的Text 属性,则可以使用StringFormat。

    <TextBox Text="{Binding SomeProperty, StringFormat={}{0}%}" />
    

    查看this 教程。

    【讨论】:

    • 我尝试在这个问题中添加:“{Binding Path=Percentage, StringFormat={}{0}%}”:stackoverflow.com/questions/1283049/… 但它对我的 TextBox 输入没有任何作用...我编辑了我的问题
    【解决方案3】:

    但是当用户插入输入时它对TextBox没有影响...

    你需要定义source属性并将TextBox的DataContext设置为定义它的类,例如:

    <TextBox x:Name="textBox1" Text="{Binding SomeProperty, UpdateSourceTrigger=PropertyChanged, StringFormat='{}{0}%'}" />
    

    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            textBox1.DataContext = this;
        }
    
        public int SomeProperty { get; set; }
    }
    

    【讨论】:

    • 您是否真的将 AddPercentSign 属性添加到定义 TextBoxInputValue 的同一个类中?如果您在 TextBox 中没有看到值,则绑定不起作用。
    • 是的,我添加了这个:public int AddPercentSign{ get;放; } 到同一个班级
    • 能否请您发布您的整个代码隐藏文件?
    • 这是一个巨大的文件...从另一面你能分享一个可以完成这项工作的工作代码示例吗?将 % 符号添加到插入到 TextBox 中的任何文本
    • 我已经做到了。只是您似乎无法将其应用于您的代码。这就是为什么我需要查看您的代码以便能够告诉您它有什么问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多