【问题标题】:Separating multiple digits numbers from numbers in Form1_KeyPress从 Form1_KeyPress 中的数字中分离多个数字
【发布时间】:2021-03-07 11:59:35
【问题描述】:

我正在使用 Keypress 功能来检测键盘数字按键以便以后使用它们。

没有更大的挑战。

但我的目标是也使用 2 位或更多位。

我的方法

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (True)
    {
        string zahlj = e.KeyChar.ToString();
        DateTime dtj = DateTime.Now;
        if ((dtj - dtv).TotalMilliseconds < 500)
            zahl += zahlj;
        else
            zahl = zahlj;
        dtv = dtj;
        this.Text = zahl;
    }
}
DateTime dtv = DateTime.Now;
string zahl = "";

这可行,假设连续击键之间有 500 毫秒的延迟。

问题是一旦输入了数字,就应该调用函数 B。现在,我怎么知道这是最后一个数字?

哪种方法是正确的,我什么时候可以给 B 打电话?

【问题讨论】:

    标签: c# keypress


    【解决方案1】:

    您需要在重置zahl 变量后调用 B,因为每 500 毫秒可能会有另一个键值。如果没有,您已经在 else 语句中使用当前键值重置 zahl 变量。所以在重置之前,你有最终的数字。

    if (True)
    {
        string zahlj = e.KeyChar.ToString();
        DateTime dtj = DateTime.Now;
        if ((dtj - dtv).TotalMilliseconds < 500){
            zahl += zahlj;
        }
        else {
            if(zahl.length > 1){ // if there is no other keypress after 500 millisecond, you have the result value at zahlj
               CallB(); // if length is > 1 so you have the result to call B function
            }
            zahl = zahlj;
        }
        dtv = dtj;
        this.Text = zahl;
    }
    

    【讨论】:

    • 数字也可以是1位,取决于500毫秒内是否有后续按键。当它是 1 位时,B 也必须被调用。
    • 所以你不需要检查长度,只需在else里面调用B即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    相关资源
    最近更新 更多