0

所以我的 C# 程序中有这个很棒的 pictureBox1。每 5 秒我调用一个 time 方法,如下所示:

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)
{ 
}

我正在尝试更改我得到的图片框对象的属性。但是在尝试这样做时出现此错误:

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

不过,pictureBox1 设置为 Public。

4

1 回答 1

1

问题一定出在您没有向我们展示的代码中……大概在OnTimedEvent.

最简单的解决方法是创建OnTimedEvent一个实例方法。这不是可访问性的问题(并且该字段不应该是公共的 - 将其设为私有!)这是尝试使用静态方法中的实例字段的问题。

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

最简单的解决方法是使用 aSystem.Windows.Forms.Timer而不是 a System.Timers.Timer

于 2012-08-29T20:51:44.930 回答