如何只允许逗号为十进制?

时间:2017-10-25 19:37:10

标签: c# wpf events key

我需要限制除空格外的所有符号,数字键盘中的0-9,小键盘和逗号中的0-9。我在numpad中处理了除逗号之外的所有内容:

e.Handled = !((e.Key >= Key.D0 && e.Key <= Key.D9) || 
        (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) ||
        e.Key == Key.Space || e.Key == Key.OemComma);

numpad中逗号的问题被识别为Decimal,但Decimal也是一个点,我应该禁止它。

如何用点和逗号分隔Decimal

2 个答案:

答案 0 :(得分:0)

您可以使用Key.Decimal。它是小键盘上的一个键,对应于美国布局上的.,以及俄语布局上的,

e.Handled = !((e.Key >= Key.D0 && e.Key <= Key.D9) || 
            (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) ||
            e.Key == Key.Space || e.Key == Key.Decimal);

答案 1 :(得分:0)

根据另一个答案的评论,听起来你要求的是如何确定if (decimal is comma)。如果是这样,那么这应该有所帮助:

var decimalSeparator = System.Globalization.CultureInfo.CurrentCulture
    .NumberFormat.NumberDecimalSeparator.ToString();

e.Handled = !((e.Key >= Key.D0 && e.Key <= Key.D9) || 
              (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) ||
              (e.Key == Key.Space) || 
              (e.Key == Key.Decimal && decimalSeparator == ","));