如何在2个班级之间访问1个计时器?

时间:2011-12-24 02:19:54

标签: c# forms class object timer

在我的项目主窗体中,我建立了一个定时器,它调用不同类的对象来设置其间隔。

    Clock.Interval = formSettings.GetTimeInTicks();
    Clock.Tick += new EventHandler(TimerEventProcessor);
    Clock.Start();

时间间隔是我的“设置”类中的设置。当用户从组合框中选择新的时间时,我希望它重新启动在我的主表单/类中建立的时钟,并使用新选择的时间。如何从我的主类访问已建立的“时钟”对象?

首先,我认为我可以将时钟作为自己的类,并从主类和设置类中实例化该类的对象,但是我认为这使得我有两个定时器处于活动状态而不是我想要的。我可以将Clock对象从主类传递给设置类吗?这里最好的路线是什么?

编辑: 我的主窗体创建了Timer

Timer Clock = new Timer();

然后我确定每个定时器周期应该是的时间,然后启动定时器。

public void MakeTheClockTimer()
{
Clock.Interval = formSettings.GetTimeInTicks();
Clock.Tick += new EventHandler(TimerEventProcessor);
Clock.Start();
}

我的第二个表单被引用为“formSettings”。此表单包含一个组合框,其中包含不同的时间选择,例如1分钟,15分钟等。当程序启动时,它会执行以下启动:

   public Form1()
    {            
        InitializeComponent();
        MakeTheClockTimer();
     }

所以程序启动,查看设置表单,返回选择的时间,然后启动计时器。我想要做的是如果用户选择不同的时间,我希望程序基本上再次调用“MakeTheClockTimer()”。如果时间选择已更改,我需要它重新启动计时器。如下所示:

private void cbxTime_SelectedIndexChanged(object sender, EventArgs e)
    {
        MainFormObject.MakeTheClockTimer();
    }

这样可以使组合框更改时,它会重新建立计时器设置并根据这些设置再次启动计时器。

1 个答案:

答案 0 :(得分:0)

  

我可以将Clock对象从主类传递给设置   类?

是的,但是你不会传递对象,你将传递对象的引用。