При передаче элемента управления вы почти всегда говорите о class
/ объект-экземпляр, поэтому все, что вы передаете, - это ссылка на элемент управления - сам элемент управления идентичен.
Одна возможная причина этого - неправильная проверка:
if(ctrl.Enabled = true) { // spot the assignment!
DoSomething(ctrl);
}
, которая должна быть:
if(ctrl.Enabled == true) {
DoSomething(ctrl);
}
или просто:
if(ctrl.Enabled) {
DoSomething(ctrl);
}
но компилятор скажет вам, что в предупреждении ...
Назначение в условном выражении всегда постоянное;Вы хотели использовать == вместо =?
Это оставляет только несколько вариантов:
-
Enabled
действительно изменилось, возможно, из-за состояниятакие изменения, как перемещение его в дереве элементов управления - свойство
Enabled
не поддается никаким изменениям и изменениям при проверке - свойство
Enabled
зависит от потока, и вы обращаетесь к нему из несколькихthreads - или, в вашем коде происходит что-то еще, о чем ваш вопрос нам не говорит, но источник может
Я предпочитаю, чтобы это был последний вариант...