Что вы можете сделать - это захватывать каждый раз, когда нажимается клавиша, и, возможно, в фоновом режиме сравнивать разницу во времени.
Установите себе порог, и если он меньше этого, вы бы его рассмотрелиДважды нажмите и сделайте все, что вам нужно.
Непроверенные компоненты могут выглядеть примерно так:
private readonly DateTime _originDateTime = new DateTime(0);
private DateTime _lastKeyPress;
Рабочий работник:
_backgroundWorker = new BackgroundWorker { WorkerSupportsCancellation = false };
_backgroundWorker.DoWork += DoBackgroundWork;
_backgroundWorker.RunWorkerAsync();
Реализация метода DoBackgroundWork:
private void DoBackgroundWork(object sender, DoWorkEventArgs doWorkEventArgs)
{
do
{
if (_lastKeyPress != _originDateTime)
{
Thread.Sleep(DelayInMilliseconds);
DateTime now = DateTime.Now;
TimeSpan delta = now - _lastKeyPress;
if (delta < new TimeSpan(0, 0, 0, 0, DelayInMilliseconds))
{
continue;
}
}
//do stuff
} while (true);
}
И не забудьте захватить ключ:
private void SomeEvent_KeyDown(object sender, KeyEventArgs e)
{
_lastKeyPress = DateTime.Now;
}
Это основано на XPath Visualizer