2012-05-07 84 views
0

主要形式,我创建一个访问从计时器事件

System.Timers.Timer aTimer = new System.Timers.Timer(); 

,并希望访问的主要形式,或Form1中从

private static void OnTimedEvent(object source, ElapsedEventArgs e) 
    {...} 

事件,我该怎么办呢?我无法通过谷歌在线找到一个例子,它可以做到这一点。我正在绘制一些图形,并希望在计时器事件触发时更改它们。我无法使用窗体计时器,因为我想将此代码移植到其他位置,并且它不可用。

感谢

+0

哪里是位于相对于Form1上定时器,究竟是什么你的意思“访问的主要形式。”你不知道如何创建和启用计时器,或者你不知道如何实例化对象? –

回答

0

我不喜欢下面的代码非常多,但如果你不能找到让您Form1实例的引用到这个事件处理的另一种方式,你可以通过Application.OpenForms尝试:

// using System.Linq; 
// using System.Windows.Forms; 

Form1 mainForm = Application.OpenForms.OfType<Form1>().SingleOrDefault(); 
0

如果问题是如何从Form1的访问方法的计时器,但它是在一个单独的类,那么你可以做的就是一通Form1的包含该定时器类的引用。在类范围内声明一个变量:

Form1 mainForm; 

重要的是您不要在此实例化它。然后创建一个像这样的方法:

public void PassReference(Form1 form1) 
{ 
    this.mainForm = form1; 
} 

现在,你从MainForm中调用PassReference后,你将有机会获得在Form1中所有公共方法。

0

我希望计时器也在MainForm中。在这种情况下,你可以使用'this'。

this - 是的MainForm

0

你的事件被声明为静态的,但时间本身是没有的。

如果你必须有一个静态事件,保持静态引用您的形式以及和使用您的计时器事件内的参考。