2011-12-30 11 views
0

私はフォーム(Form1)を持っていて、このフォームにはSystem.Timers.Timerというオブジェクトがあります。私はフォームを無効にしたいと思います(基本的に、これは私の目標です、無効にする(Invalidate()と呼ぶ)ときどき、イベントがトリガーされるたびにタイムアウト時間が変わる)。しかし、イベントハンドラメソッドは静的なので、フォームのインスタンスにアクセスすることはできません。タイマーイベントハンドラからフォームを更新

イベントハンドラにオブジェクトを渡すにはどうすればよいですか?

+0

こんにちは!ドラフトコードをここに入れてください。 –

+0

さて、それを静的な方法にしないでください。 * this *を使用できるようにフォームのインスタンスメソッドにします。 Timerクラスは気にしません。 –

答えて

1

から開始すると、あなたのフォームにタイマーをドラッグ&ドロップすることができます意味コンポーネントです。プロパティグリッドを使用して時間を有効にし、タイマー間隔を設定します。プロパティグリッドを変更してイベントを表示し、チックイベントをダブルクリックします。新しいイベントハンドラが作成されます。

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()); 
     } 
関連する問題