Как разово отменить выполнение события

200
10 декабря 2017, 09:11

Задача связать 2 способа задания размера окна

Есть NumericUpDown в котором я меняю размер окна, в зависимости от Value.

Есть обработчик событий pictureBox_ClientSizeChanged, в котором я меняю NumericUpDown.Value в зависимости от размера окна

Соответственно, лишний вызов события. Меняю значение окна через Value -> меняется размер окна -> вызывается pictureBox_ClientSizeChanged, и из-за этого повторного вызова переменная обрабатывается 2 раза, и оказывается неверной

Что нужно прописать в numericUpDown_ValueChanged, чтобы не вызывалось событие изменения окна?

Answer 1

Заведите флаг и выставляйте его в нужный момент:

bool flag = false;
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
    if (flag) return;
    flag = true;
    Width = (int)numericUpDown1.Value;
    flag = false;
}
private void Form1_ResizeEnd(object sender, EventArgs e)
{
    if (flag) return;
    flag = true;
    numericUpDown1.Value = Width;
    flag = false;
}
READ ALSO
Таймер отсчета до определенной даты

Таймер отсчета до определенной даты

Нужно установить отсчет времени до нового годаВроде написал все верно, а когда запускаю, текст label'ов не меняется

185
Вычисление суммы ряда на С#

Вычисление суммы ряда на С#

Вычислить сумму ряда с заданной точностью eps

220
Взаимодействие между двумя и более ViewModel

Взаимодействие между двумя и более ViewModel

Доброго времени суток, ГосподаПрошу помочь мне в моем спаггети-коде и разложить все по полочкам

243