Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Изменение атрибута без последующего события


Автор: lightforever 6.11.2010, 17:01
Имеется экземляр класса NumericUpDown:
 
Код

NumericUpDown nc;


Изменяю програмно значение экземпляра: 
Код

nc.value=10;


И вслед за этим происходит событие nc_ValueChanged(object sender, EventArgs e), которое определено у используется для непрограмного вызова. 

Как сделать, чтобы при програмном изменении значения экземпляра NumericUpDown(да сосбтвенно говоря и других Control'ов) не возикало события(для NumericUpDown nc_ValueChanged например) ?

Автор: Fortnox 6.11.2010, 18:02
"Отвязать" событие перед установкой значения:
Код

numericUpDown1.ValueChanged -= new EventHandler(numericUpDown1_ValueChanged); /*в скобках имя обработчика события*/


Добавлено через 2 минуты и 57 секунд
Забыл добавить, а после установки значения, снова привязать обработчик.

А если просто не надо выполнять код, который находится в обработчкие, можно так:
Код

        private bool isIgnore;

        private void btnAdd_Click(object sender, EventArgs e)
        {
            isIgnore = true;
            numericUpDown1.Value = 20;
            isIgnore = false;
        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            if (isIgnore)
                return;
        }

Автор: lightforever 6.11.2010, 18:09
Спасибо. Сам чтот не додумался сразу))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)