Как объединить события изменения из нескольких одновременно установленных элементов управления? - PullRequest
1 голос
/ 07 ноября 2011

У меня есть четыре numericUpDowns, значения которых влияют на управление выводом.У них есть общий обработчик события ValueChanged, который соответствующим образом обновляет текстовый элемент управления.Это хорошо для пользовательских изменений в самих элементах управления numericUpDown.Но у меня также есть кнопка, которая устанавливает четыре значения элемента управления numericUpDown в одной операции, и я хочу, чтобы выходной элемент управления обновлялся один раз в конце, а не четыре раза, т.е. один раз для каждого набора.Как лучше это организовать?

Ответы [ 2 ]

2 голосов
/ 07 ноября 2011

Просто используйте флаг:

private bool _updatingAllValues;

private void ValueChanged(object sender, EventArgs e)
{
    if (_updatingAllValues)
        return;

    // refresh the control...
}

private void btnUpdateAllValues_Click(object sender, EventArgs e)
{
    try
    {
        _updatingAllValues = true;
        // update all NumericUpDowns...
    }
    finally
    {
        _updatingAllValues = false;
    }

    // refresh the control...
}
2 голосов
/ 07 ноября 2011

Вам потребуется либо отсоединить и повторно подключить обработчики событий во время операции набора, либо использовать логический флаг, который вы включаете в начале изменения набора и выключаете в конце, чтобы указать, что не нужно обрабатывать числовые изменения. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...