在Timer方法中更改pictureBox1属性

时间:2012-08-29 20:46:51

标签: c# visual-studio-2010

所以我在C#程序中有这个很棒的pictureBox1。我每隔5秒钟就会调用一次这样的时间方法:

public Form1()
{
    InitializeComponent();
    aTimer = new System.Timers.Timer(10000);
    aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
    aTimer.Interval = 2000;
    aTimer.Enabled = true;
}

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

我正在尝试更改我获得的pictureBox对象的属性。但是在尝试这样做时我遇到了这个错误:

  

错误1非静态字段,方法或属性'Simma.Form1.pictureBox1'需要对象引用C:\ Users \ John \ Desktop \ Simma \ Simma \ Form1.cs 39 13 Simma

pictureBox1设置为Public。

1 个答案:

答案 0 :(得分:1)

问题必须出在您未向我们展示的代码中......大概是OnTimedEvent

最简单的解决方法是使OnTimedEvent成为实例方法。这不是可访问性问题(字段不应该公开 - 将其设为私有!)这是尝试使用实例字段的问题em> static 方法。

但请注意,您不应尝试从非UI线程访问UI元素。目前,您的计时器将在不同的线程中触发其事件,从而导致跨线程问题。

最简单的解决方法是使用System.Windows.Forms.Timer代替System.Timers.Timer