2010-09-23 7 views
4

Иногда мое свойство UserControl Visible не обновляется корректно. Это происходит при загрузке моего приложения в OnFontChanged, запущенном из InitializeComponent, вероятно, потому, что еще не настроен какой-то другой материал. Я просто не могу понять, что.Почему свойство Visible неправильно обновляется в UserControl?

alt text

vScrollBar является UserControl и находится внутри другого UserControl. По-видимому, это происходит только при попытке установить значение true. vScrollBar уже имеет свою ручку, поскольку часы на IsHandleCreated говорят, что это правда.

ответ

1

Он все еще может показывать false, если форма не загружена. Попробуйте установить его в событии OnLoad формы.

+0

Фактическое практическое решение, Thx! – Gabriel

6

Чтение видимого свойства дает вам фактическое состояние видимости элемента управления, а не «предполагаемое» состояние. Который всегда будет ложным в методе InitializeComponent(), форма или элемент управления пока не видны до после. Событие загрузки запускается. Он также будет ложным, если элемент управления контейнера не отображается.

+0

«Очень образованный», thx (: – Gabriel

+0

Wow, это очень легко ввести ошибки таким образом. Я установил Visible и поместил его в if() в следующей строке, считая, что это будет значение, которое я только что установил. stuff! – magnattic

+0

@atticae: Тот факт, что Microsoft сделал что-то определенно в .net, не всегда означает, что это была хорошая идея. Казалось бы, Microsoft не может решить, иметь ли свойство, которое говорит, можно ли увидеть что-то, или что-то позволяет себе видеть, на самом деле свойства были бы полезны, если бы им давались разные имена, но по какой-то причине Microsoft решила иметь свойство под названием «Видимый», чей геттер возвращает первое и чей сеттер контролирует второе. Некоторые компьютеры 1970-х годов имели такие проблемы в своих проектах, но люди никогда не узнают ... – supercat

 Смежные вопросы

  • Нет связанных вопросов^_^