我正在开发软件,如果单击一个按钮5次,则变量增加“1”
如果是A然后B ++
一切都很好,但现在我希望系统重置其计数器,如果5次没有在10秒内发生。即点击事件的速度。
如果我点击太慢,即使我点击了5次超过10秒的时间,也不会发生增量。
有什么建议吗?
答案 0 :(得分:0)
这可以做得更好,但应该有效:
DateTime time = new DateTime();//time of first click
int counter = 0;
void button_click(object sender, EventArgs e)
{
if(counter == 0)
{time = DateTime.Now}
else if(counter == 5)
{
if( DateTime.Now.Subtract(time).Duration().Seconds <= 10)
{/*Do some cool stuff*/}
else
{counter = -1;}
}
counter++;
}
答案 1 :(得分:0)
我会做这样的事情:
const int ClicksRequired = 5;
readonly TimeSpan ClickTimeSpan = new TimeSpan(0, 0, 10);
Queue<DateTime> _clicks = new Queue<DateTime>();
private void clickTarget_MouseUp(object sender, MouseEventArgs e)
{
var currentTime = DateTime.Now;
_clicks.Enqueue(currentTime);
if (_clicks.Count == ClicksRequired)
{
var firstTime = _clicks.Dequeue();
if (currentTime - firstTime <= ClickTimeSpan)
{
MessageBox.Show("Hello World!");
_clicks.Clear();
}
}
}
我使用队列来跟踪点击次数,因为在时间窗口中有五次点击之前,您不知道哪个鼠标点击实际上是第一次点击。您需要及时了解第五次点击的时间,并且每次后续点击都会发生更改。
我使用MouseUp而不是Click,因为如果在系统双击间隔内发生点击,则点击可能不会触发正确的次数(因为这些会被路由到DoubleClick)。