1

たとえば300ミリ秒などの特定の期間に押されたキーストロークをキャプチャする必要があります。したがって、 「 a 」を押して300ミリ秒以内に「b」を押すと、文字列「ab」が必要になります。しかし、 「 b」を300ミリ秒押した後にキー「 c 」を押すと、「c」が必要になります。

すばやく押したキーで始まるDataGridViewのセルにすばやくジャンプするためにこれが必要です。

4

1 に答える 1

2

あなたの質問を完全に理解できるかどうかはわかりませんが、2つのキーが押された場合は1つのコードブロックを実行し、3つのキーが押された場合は別のコードブロックを実行する方法が必要だと思います。さらに、各キーの押下が互いに300ミリ秒以内にあるようにします。私が理解していれば、このコードはあなたが望むことをするはずです:

private System.Diagnostics.Stopwatch Watch = new System.Diagnostics.Stopwatch();
private string _KeysPressed;
public string KeysPressed
{
    get { return _KeysPressed; }
    set 
    {
        Watch.Stop();
        if (Watch.ElapsedMilliseconds < 300)
            _KeysPressed += value;
        else
            _KeysPressed = value;
        Watch.Reset();
        Watch.Start();
    }
}        
private void KeyUpEvent(object sender, KeyEventArgs e)
{
    KeysPressed = e.KeyCode.ToString();
    if (KeysPressed == "AB")
        lblEventMessage.Text = "You've pressed A B";
    else if (KeysPressed == "ABC")
        lblEventMessage.Text = "You've pressed A B C";
    else
        lblEventMessage.Text = "C-C-C-COMBOBREAKER!!!";
}

このコードは、ラベル、lblEventMessage、およびKeyUpイベントをトリガーするものを想定しています(テキストボックスを使用しました)。

于 2013-03-26T19:58:59.827 に答える