我有一个表单(Form1),这个表单有一个System.Timers.Timer
对象。我想使表单无效(基本上这是我的目标,无效(调用Invalidate()
)表单每隔一段时间,其中每次触发事件时超时周期都会改变)。但是,由于事件处理程序方法是静态的,我无法访问我的表单实例。
如何将一些对象传递给我的事件处理程序?
答案 0 :(得分: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());
}
答案 1 :(得分:1)
这非常简单,winforms计时器是一个组件,这意味着您可以将计时器拖放到表单上。使用属性网格启用时间并设置计时器间隔。更改属性网格以显示事件,然后双击tick事件。将为您创建一个新的事件处理程序。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
Invalidate();
}
}