2011-12-30 63 views
0

我有一个表单(Form1),并且此表单有一个System.Timers.Timer对象。我希望使表单无效(基本上这是我的目标,无效(致电Invalidate())表单每隔一段时间,其中超时期间每次触发事件时都会更改)。但是,由于事件处理程序方法是静态的,我无法访问我的表单实例。计时器事件处理程序的更新表单

如何将一些对象传递给我的事件处理程序?

+0

嗨!把你的草案代码放在这里。 – 2011-12-30 13:37:12

+0

那么,只是不要让它成为一个静态的方法。使其成为窗体的实例方法,以便您可以使用* this *。 Timer类不会介意。 – 2011-12-30 13:44:03

回答

1

这是非常简单的开始,计时器的WinForms是,这意味着你可以拖放一个计时器到窗体的组件。使用属性网格来启用时间并设置计时器间隔。更改属性网格以显示事件并双击tick事件。将为您创建一个新的事件处理程序。

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     Invalidate(); 
    } 
} 
1

我很确定你可以使用MS TPL。从here

Task formManager; 
private void FormManagerUpdateUI() 
     { 
      // ... UI update work here ... 
     } 

     private void StartFormManager() 
     { 
      formManager = Task.Factory.StartNew(() => { /* You validation code goes here */ }, TaskCreationOptions.LongRunning); 
      formManager.ContinueWith((t) => { FormManagerUpdateUI(); }, TaskScheduler.FromCurrentSynchronizationContext()); 
     }