-->

WPF主要是数字或数字(WPF Key is digit or number)

2019-07-19 19:01发布

我有previewKeyDown方法在我的窗口,我想知道的按键只有AZ字母或1-0号(不anyF1..12,回车,Ctrl,Alt等-只是字母或数字)。

我试过Char.IsLetter ,但我需要给焦炭,所以e.key.ToString()[0]不起作用,因为它几乎每次一个字母。

Answer 1:

像这样的东西会做什么:

if ((e.Key >= Key.A && e.Key <= Key.Z) || (e.Key >= Key.D0 && e.Key <= Key.D9) || (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9))

当然,你也必须检查,像CTRL没有修饰键是根据您的要求按下。



Answer 2:

e.Key是给你的成员enum System.Windows.Input.Key

你应该能够做到以下几点,以确定它是否是一个字母或数字:

var isNumber = e.Key >= Key.D0 && e.Key <= Key.D9;
var isLetter = e.Key >= Key.A && e.Key <= Key.Z;


Answer 3:

在特定情况下提供的答案乔恩和杰弗里可能是最好的,但是如果你需要测试你的字符串一些其他的字母/数字逻辑,那么你可以使用KeyConverter类的转换System.Windows.Input.Key为字符串

var strKey = new KeyConverter().ConvertToString(e.Key);

您仍然需要进行检查,看是否被按住任何修饰键(Shift,Ctrl和Alt),并且还应该指出的是,这只适用于字母和数字。 特殊字符(如逗号,引号等)将得到显示一样e.Key.ToString()



Answer 4:

试试这个,它的工作原理。

    private void txbNumber_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key >= Key.D0 && e.Key <= Key.D9) ; // it`s number
        else if (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) ; // it`s number
        else if (e.Key == Key.Escape || e.Key == Key.Tab || e.Key == Key.CapsLock || e.Key == Key.LeftShift || e.Key == Key.LeftCtrl ||
            e.Key == Key.LWin || e.Key == Key.LeftAlt || e.Key == Key.RightAlt || e.Key == Key.RightCtrl || e.Key == Key.RightShift ||
            e.Key == Key.Left || e.Key == Key.Up || e.Key == Key.Down || e.Key == Key.Right || e.Key == Key.Return || e.Key == Key.Delete ||
            e.Key == Key.System) ; // it`s a system key (add other key here if you want to allow)
        else
            e.Handled = true; // the key will sappressed
    }


Answer 5:

添加到Microsoft.VisualBasic程序的引用,并使用VB IsNumeric函数,与char.IsLetter组合()。



Answer 6:

你可以把一些代码来显示你想要什么? 不应该这样对你的工作

      if(e.key.ToString().Length==1)

    `Char.IsLetter(e.key.ToString()[0])`
    else

//


文章来源: WPF Key is digit or number
标签: c# wpf key keydown