Обновить форму из обработчика событий таймера - PullRequest
0 голосов
/ 30 декабря 2011

У меня есть форма (Form1), и у этой формы есть System.Timers.Timer объект. Я хотел бы аннулировать форму (по сути, это моя цель - аннулировать (звоните Invalidate()) форму время от времени, когда период времени меняется каждый раз, когда происходит событие). Однако, поскольку метод обработчика событий является статическим, у меня нет доступа к экземпляру моей формы.

Как я могу передать некоторые объекты моему обработчику событий?

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Это довольно просто, таймер winforms - это компонент, который означает, что вы можете перетаскивать таймер на форму. Используйте сетку свойств, чтобы включить время и установить интервал таймера. Измените сетку свойств, чтобы отобразить события, и дважды щелкните событие галочки. Для вас будет создан новый обработчик событий.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        Invalidate();
    }
}
1 голос
/ 30 декабря 2011

Я почти уверен, что вы можете использовать MS TPL.Начните с здесь

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());
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...