2011-12-30 33 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()); 
     }