在执行代码时忽略其他输入

时间:2012-04-03 08:42:52

标签: c# .net wpf

any1是否知道如何制作此代码 - >在执行后超过2秒内阻止和忽略任何其他输入?这似乎是一个非常简单的问题,但是我已经在谷歌上搜索了2天,请帮忙。

public void PressCOM(string key)
{
    if (key == "P")
    {
        PressP("p");
        ReleaseKey();
    }
}

2 个答案:

答案 0 :(得分:2)

我不知道何时调用PressCOM,或PressPReleaseKey做什么,所以我可能会离开。但是,如果在按下某个键时将PressCOM作为事件调用,为什么不创建自己的中断期,在此期间您将无法处理任何进一步的事件?

答案 1 :(得分:2)

如果在事件处理程序方法期间调用此代码,您可以:

1)在退出时禁用事件处理程序方法并在退出时重新启用

myCtrl.KeyPress -= new KeyPressEventHandler(myHandler);  
PressCom(key);  
myCtrl.KeyPress += new KeyPressEventHandler(myHandler);  

2)或简单地在KeyPress事件

中声明一个静态全局表单变量
private static _onKeyPress = false;  

if(_onKeyPress == false)   
{  
    _onKeyPress = true;  
    PressCom(key);  
    _onKeyPress = false;  
}  

在每种情况下,必须在此处提供的伪代码中添加对错误条件的适当处理。否则,您可能会在没有事件处理程序连接到您的按键或全局变量设置为true的状态下结束,并且没有人可以将其重置为false。