WPF中TextBox限制输入小数以及整数

1.数据输入事件采集

事件判断:

public static bool isInputNumber(KeyEventArgs e)
        {
            if ((e.Key >= Key.D0 && e.Key <= Key.D9) || (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) ||
               e.Key == Key.Delete || e.Key == Key.Back || e.Key == Key.Left || e.Key == Key.Right || e.Key == Key.OemPeriod|| e.Key == Key.Subtract||e.Key== Key.Decimal)
            {
                //按下了Alt、ctrl、shift等修饰键
                if (e.KeyboardDevice.Modifiers != ModifierKeys.None)
                {
                    e.Handled = true;
                }
                else
                {
                    return true;
                }

            }
            else//按下了字符等其它功能键
            {
                e.Handled = true;
            }
            return false;
        } 

2 事件导入判断

/// <summary>
        ///输入数字
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void PinputNos(object sender, KeyEventArgs e)
        {
            if (! isInputNumber(e))
            {
                MessageBox.Show("请输入数字!");
            } 
        }

3 如果是小数输入小数点, TextBox属性操作
需要加入小数 字符判断:
如果使用了StringFormat或自定义转换器,请检查其是否正确处理小数点。确保绑定的控件(如TextBox)允许输入小数点。

wpf 绑定 输入小数点不显示
在WPF中,如果你遇到绑定输入小数点不显示的问题,可能是因为绑定的数据类型不是double或float等数值类型,或者是因为绑定的控件(比如TextBox)的数据模板中有自定义的转换器或者格式设置导致小数点不显示。

解决方法:

确保绑定的源属性是数值类型(如double或float)。

如果使用了StringFormat或自定义转换器,请检查其是否正确处理小数点。

确保绑定的控件(如TextBox)允许输入小数点。

示例代码:

XAML部分:

<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TextBox Text="{Binding Path=DecimalValue, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0:N2}}" Width="100" HorizontalAlignment="Left" VerticalAlignment="Top"/>
    </Grid>
</Window>

绑定属性即可。
添加以下操作

PreviewKeyDown="PinputNos"

如果遇上修改了数据类型以后依然无法输入小数点就没有办法了,只能将绑定的参数修改成string 类型
创建修改下原来的属性类似于如下操作:

 /// <summary>
        /// 外径最小值
        /// </summary>
        public string WaijingMinStr { get; set; } = "0";
        public decimal WaijingMin
        {
            set
            {
                WaijingMinStr = value.ToString();
            }
            get
            {
                return Convert.ToDecimal(WaijingMinStr);
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值