2010-01-21 3 views
2

Я хочу изменить значение флажка, не увеличивая событие onCheck. Я знаю, что есть такие работы, как un registration, изменение значения, а затем повторная регистрация, Внутри метода события, основанного на флагове, либо пропустить, либо оценить инструкции метода или любые другие работы вокруг. Я ищу более чистые способы для этого.Изменить значение флажка без события события

+3

Является ли это WinForms или WebForms? Ответ в каждом случае значительно различается. – Oded

+0

Если вам нужна эта функциональность, у вас, вероятно, есть уродливый дизайн в голове или создание более сложного решения, чем необходимо ... Расскажите нам, почему вы хотите это сделать, и, возможно, вам больше не понадобится ответ. – Stormenet

+0

Уважаемый Stormenet, Дело в том, что я хочу выполнить определенную проверку, когда установлен флажок. после того, как пользователь решает не продолжать, значение необходимо сбросить. – Ravisha

ответ

3

Вы можете получить класс CheckBox, переопределить CheckBox.OnCheckedChanged Method и не вызывать метод OnCheckedChanged базового класса, и событие не будет запущено. У вас также может быть свойство, которое указывает, должно ли оно быть поднято или нет.

+0

Ну, не делайте этого, Поскольку кодовая база уже использовала многие флажки. Их замена будет задачей геркулеса. Это я думал о том, когда я столкнулся с проблемой. Но это невозможно. – Ravisha

+0

это звучит разумно и работает как для веб-форм, так и для форм Win – naivists

+0

@ Ravisha, почему? Это всего лишь замена строки во всех файлах! – naivists

5

Я знаю, что это старая нить, но ответ на этот вопрос слишком сложный.
Я почти никогда не использовал событие OnCheckedChanged. Вместо этого я предпочитаю использовать OnMouseUp. Таким образом, вы можете установить флажки или переключатели, как вы хотите, при запуске без запуска событий.

При проверке событий OnMouseUp, чтобы увидеть, если флажок установлен после того, как MouseUp бывает так ..

private void chkBox1_MouseUp(object sender, MouseEventArgs e) 
{ 
    if (chkBox1.Checked) 
    { 
     // do some stuff if the box is checked after a mouseup on it 
    } 
} 

Я делал это таким образом в течение длительного времени. Он используется для больших проблем, чтобы помещать переменные флага в OnChanged Events, чтобы сообщить функциям ничего не делать, пока мы устанавливаем состояния ящиков. Использование MouseUp проще. дс

+7

Вы также добавляете обработчик 'OnKeyUp', когда пользователи переключают проверенное состояние с помощью пробела? –

0

Снимите и Переназначьте обработчик:

myCheckbox.Checked -= myCheckbox_Checked; 
myCheckbox.IsChecked = true; 
myCheckbox.Checked += myCheckbox_Checked;