我创建以下表单,然后单击3个按钮(随机)。单击按钮后,必须在单击3秒后显示相关消息。但是,如果我同时点击了另一个按钮,则必须显示该按钮的相关消息,并且必须取消队列中的上一条消息。
例如,如果我在11.30.00点击button1
,则相关消息应仅在11.30.03弹出,如“你点击:1秒前1秒”。但是如果我在11.30.03之前点击另一个button2
,比如说在11.30.02那么相关的消息应该在11.30.05弹出,比如“你点击:3秒之前的2”,并且计划于11.30.03的消息有被取消。
这是我的代码:
private int signal = 0;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
signal = 1;
displayMessage(signal);
}
private void button2_Click(object sender, EventArgs e)
{
signal = 2;
displayMessage(signal);
}
private void button3_Click(object sender, EventArgs e)
{
signal = 3;
displayMessage(signal);
}
private void displayMessage(int number)
{
MessageBox.Show("You clicked : "+number+ "before 3 Seconds");
}
答案 0 :(得分:5)
设置按钮Tag
:
button1.Tag = 1;
button2.Tag = 2;
button3.Tag = 3;
然后设置Click
事件:
button1.Click += button_Click;
button2.Click += button_Click;
button3.Click += button_Click;
在Click
事件:
private void button_Click(object sender, EventArgs e)
{
signal = (int) ((Button))sender.Tag;
displayMessage(signal);
}
答案 1 :(得分:2)
启动计时器。根据按钮单击保持更改信号值,当经过的时间等于3秒时,从tick事件中显示消息框。根据您的需要设置计时器间隔,这将反映在“相关消息”中。
int signal = 0;
System.Timers.Timer t = new System.Timers.Timer(3000);
private void Form1_Load(object sender, EventArgs e)
{
//----------------------- other parts of code ---------------------
// at last
t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
t.Start();
}
void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (signal == 0)
return;
t.Stop();
MessageBox.Show("You clicked: " + signal + " before " + t.Interval + " Seconds");
signal = 0;
t.Start(); //move this to top of msgbox if you want timer to be reset right after poppin the msgbox.
}
private void button1_Click(object sender, EventArgs e)
{
signal = 1;
t.Stop();
t.Start();
}
private void button2_Click(object sender, EventArgs e)
{
signal = 2;
t.Stop();
t.Start();
}
private void button3_Click(object sender, EventArgs e)
{
signal = 3;
t.Stop();
t.Start();
}
答案 2 :(得分:1)
这不是某个人会给你一个答案的地方,对该地区进行一些研究,然后如果你遇到困难就发布。 你想创建一个静态计时器,并检查它是否在每个事件中完成
http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/system.timers.timer(v=vs.71).aspx