困难keychar

时间:2010-10-04 09:05:40

标签: c# winforms

为什么这个食谱错了

        if (e.KeyChar <= (char)Keys.NumPad0 && e.KeyChar >= (char)Keys.NumPad2)
        {
            if (e.KeyChar <= (char)Keys.O && e.KeyChar >= (char)Keys.Oem2)
            {
                MessageBox.Show("Yes");
            }
        }

我希望成为0到2之间的数字

4 个答案:

答案 0 :(得分:3)

您正在检查它是否等于或小于0并且同时等于或大于2.这是不可能的。你必须切换大于和小于,反之亦然,并处理小键盘和其他数字键,改为:

if (e.KeyChar >= (char)48 && e.KeyChar <= (char)50)
    ...

答案 1 :(得分:2)

Keys.O

因为你不能用0(数字0)启动枚举名称,所以必须是O(字母o)

并且整个逻辑似乎有缺陷,它应该像

 if ((e.KeyChar >= (char)Keys.NumPad0 && e.KeyChar <= (char)Keys.NumPad2) || (e.KeyChar => (char)Keys.Oem0 && e.KeyChar <= (char)Keys.Oem2))

(我不确定&gt; =和&lt; =和Oem0)

答案 2 :(得分:2)

我无法判断此代码​​是否存在于KeyDown或KeyPress事件处理程序中。如果要过滤键入键,则应使用KeyPress。然后代码就是:

        if (e.KeyChar >= '0' && e.KeyChar <= '2') {
            MessageBox.Show("yes");
        }

答案 3 :(得分:1)

介于0和2之间......

e.KeyChar >= (char)Keys.NumPad0 && e.KeyChar <= (char)Keys.NumPad2