c#如何从主窗体以外的类中引发事件以启动定时器
本文关键字:事件 定时器 启动 窗体 | 更新日期: 2023-09-27 18:07:28
在我的主Form1中,我有
int duration = 5;
public void timer1_Tick(object sender, EventArgs e)
{
duration--;
if (duration == 0)
{
timer1.Stop();
MessageBox.Show("timesup");
}
}
在其他地方,(特别是我用于UDP侦听器的类),我运行一个事件来引用表单
的更改private MyProject.Form1 _form { get; set; }
public UDPListener(TapeReader.Form1 form)
{
_form = form;
}
然后,当传入的数据符合我的标准时,我会尝试调用它
if (numberSize>paramSize)
{
if (_form.listBox1.InvokeRequired)
{
_form.listBox1.Invoke((MethodInvoker)delegate ()
{
//Below is where I would like the timer to start
_form.timer1.Start();
//This won't work as I need the timer1_Tick from the main. How can I run this from a different class other than the main form?
});
}
}
像我的表单的其他组件,我可以引用它与_form
,但timer1_Tick是一个方法(void)。有办法做到这一点吗?
找到解决方案。我只是用这个教程来帮助我https://msdn.microsoft.com/en-us/library/system.windows.forms.timer.tick(v=vs.110).aspx
在我的另一个类,我有:
_form.timer1.Tick += new EventHandler(TimerEventProcessor);
我引用它到
int duration = 5;
private void TimerEventProcessor(object myObject, EventArgs myEventArgs)
{
duration--;
if(duration==0)
{
MessageBox.Show("timesup");
}
}