【问题标题】:Windows Form Calculator - Numpad Keys For InputWindows 窗体计算器 - 用于输入的数字键盘键
【发布时间】:2017-12-21 15:42:22
【问题描述】:

我目前正在为我的工作学习 c#,我一直在尝试一些入门项目,我决定制作一个计算器,我拥有一个简单计算器的所有功能,但是我无法获得小键盘与按键事件或按键事件一起使用的键,我想知道是否有人可以详细帮助我,我想将所有小键盘键设置为计算器上的对应键,这是我尝试过的代码按键事件,我也尝试过打开和关闭数字键盘锁定。

 private void n1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar = '1')
        {
            e.Handled = true;
            n1.PerformClick();

        }

    }

只是一个快速的编辑,我尝试按照 MSDN 示例并包括以下内容

private void n1_KeyDown(object sender, KeyEventArgs e) {

        if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
        {
            if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
            {
                nonNumberEntered = true;
            }
        }

还是没有成功

【问题讨论】:

  • 如果无法阅读文档,请使用 F9 键在代码中的 if 行设置断点。然后尝试按数字键盘数字键并使用监视窗口找出在这种情况下e.KeyChar 等于什么。你也可以看看e 的其他属性。
  • Calculator keypress的可能重复
  • 我在 NumLock 开启的情况下检查了 & - 按下 1 键确实会获得一个 KeyPress 事件,其 e.KeyChar 的值等于 '1'。
  • 查看您的代码,我看到方法是 n1_KeyPress - 您是否有多个按钮,每个按钮都附加了一个按键事件 n2_, n3_ ...? KeyPress 事件只会发生在具有焦点的按钮上。
  • 所以我决定以不同的形式重新编写所述代码,但我仍然没有这样的运气,private void n1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys .NumPad0 || e.KeyCode == Keys.D0) } }

标签: c# windows numbers


【解决方案1】:

参考 MSDN Key Enum 页面。

例如Keys.NumPad0 在键盘上,Keys.D0 是数字键。所以你想做这样的事情

if (e.KeyCode == Keys.NumPad0 || e.KeyCode == Keys.D0)

而且您可能还想映射运算符,例如Keys.Add 供您添加。

【讨论】:

    【解决方案2】:

    检查等号运算符应该是什么。

    if (e.KeyChar == '1')
    

    (你不会是最后一个掉进那个洞的人,相信我....)

    【讨论】:

    • 我不认为这是问题所在 - 就目前而言,代码不会编译报告“无法将 char 隐式转换为 bool” - 在 C# 中,仅可能意外使用了赋值运算符如果赋值为布尔值或存在隐式转换,则为布尔表达式。
    【解决方案3】:

    尝试使用比较而不是分配。

    【讨论】:

    • 查看我上面的评论 - 代码将无法使用该分配进行编译。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 2012-07-25
    • 2011-11-25
    • 2013-09-18
    相关资源
    最近更新 更多