2012-04-03 8 views
0

any1はこのコードを作成する方法を知っていますか?>実行後2秒を超えて他の入力を禁止し無視するには?それは非常に簡単な質問のようですが、私はこのために2日間のグーグルで苦労しています、pls助けてください。コードの実行中に他の入力を無視する

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

System.Threading.Thread.Sleep(2000);あなたが必要とすることをしないでください? – JMK

+0

'Sleep'は入力を遅らせるだけで、ユーザーの入力を無視しません。 – hakunabean

答えて

2

私はPressCOMが呼び出されたときに知っていない、またはPressPReleaseKeyは何をすべきか、私はオフになる場合もあります。しかし、キーが押されたときにPressCOMがイベントとして呼び出された場合、あなた自身のブラックアウト期間を作成してください。その間は、それ以上のイベントは処理されません。

+0

実際これはタッチパッド仮想キーボードのコードです。しかし、彼らが使っているコードは私にとっては奇妙です。だから私はボタンに似た何かに関数を変更する方法を知らない。 「PressCOM」は仮想パッド、「PressP」はユーザが触れる画像である。 – hakunabean

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にリセットすることもできません。

関連する問題