any1はこのコードを作成する方法を知っていますか?>実行後2秒を超えて他の入力を禁止し無視するには?それは非常に簡単な質問のようですが、私はこのために2日間のグーグルで苦労しています、pls助けてください。コードの実行中に他の入力を無視する
public void PressCOM(string key)
{
if (key == "P")
{
PressP("p");
ReleaseKey();
}
}
any1はこのコードを作成する方法を知っていますか?>実行後2秒を超えて他の入力を禁止し無視するには?それは非常に簡単な質問のようですが、私はこのために2日間のグーグルで苦労しています、pls助けてください。コードの実行中に他の入力を無視する
public void PressCOM(string key)
{
if (key == "P")
{
PressP("p");
ReleaseKey();
}
}
私はPressCOM
が呼び出されたときに知っていない、またはPressP
とReleaseKey
は何をすべきか、私はオフになる場合もあります。しかし、キーが押されたときにPressCOM
がイベントとして呼び出された場合、あなた自身のブラックアウト期間を作成してください。その間は、それ以上のイベントは処理されません。
実際これはタッチパッド仮想キーボードのコードです。しかし、彼らが使っているコードは私にとっては奇妙です。だから私はボタンに似た何かに関数を変更する方法を知らない。 「PressCOM」は仮想パッド、「PressP」はユーザが触れる画像である。 – hakunabean
このコードは、イベントハンドラメソッドの間に呼び出された場合、あなたがすることができます
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にリセットすることもできません。
System.Threading.Thread.Sleep(2000);あなたが必要とすることをしないでください? – JMK
'Sleep'は入力を遅らせるだけで、ユーザーの入力を無視しません。 – hakunabean