Wpf 重写控件TextBox 为光标位置重新赋值不起作用问题

在WPF中创建一个只能输入金额的TextBox控件,限制整数和小数位数。遇到问题:当输入超出限制时,虽然阻止了输入,但光标会移动到开头导致仍能输入。解决方法是在构造函数中禁用输入法,并通过PreviewTextInput事件控制输入。
摘要由CSDN通过智能技术生成

Wpf 重写控件TextBox 为光标位置重新赋值不起作用问题

要写一个控件只能输入金额,而且能控制,小数位是多少,整数位数是多少。

     /// <summary>
    /// 设置Text文本以及光标位置
    /// </summary>
    /// <param name="text"></param>
    private void SetTextAndSelection(string text)
    {
        //保存光标位置
        int selectionIndex = this.SelectionStart;
        this.Text = text;
        //恢复光标位置 系统会自动处理光标位置超出文本长度的情况
        this.SelectionStart = selectionIndex;
    }

这个方法就是说当输入的值超出了我设置的长度后,我重新给文本赋值
然后把光标的位置改变一下
在这里插入图片描述
我设置他的长度只能是4位(除了小数点之外) 小数位能输入 2位,但是当我输入第五位的时候确实不让我输入了,但是光标跑到了最前面 这时就可以随便输入了。
在这里插入图片描述
我把判断写在了change事件里。
写到这里我就纠结了好久
this.SelectionStart =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值