2012-08-29 2 views
0

Итак, у меня есть этот потрясающий pictureBox1 в моей программе на C#. Каждые 5 секунд я вызываю метод времени следующим образом:Change pictureBox1 свойства в методе таймера

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 установлен как общедоступный.

+0

где код, в котором вы пытаетесь изменить окно изображения? –

ответ

1

Проблема должна быть в коде, который вы нам не показали ... предположительно в OnTimedEvent.

Простейшим решением является вместо этого метод экземпляра OnTimedEvent. Это не вопрос доступности (и поле не должно быть быть общедоступным - сделайте это приватным!), Это вопрос использования экземпляра от статического метода.

Обратите внимание, однако, что вы также не должны пытаться получить доступ к элементу пользовательского интерфейса из потока, отличного от UI. В настоящее время ваш таймер будет запускать свое событие в другом потоке, вызывая проблемы с перекрестными потоками.

Простейшим решением для этого является использование System.Windows.Forms.Timer вместо System.Timers.Timer.

Смежные вопросы