Элементы управления на вкладке (элемент управления вкладкой), которые не видны return visible = false - PullRequest
4 голосов
/ 13 января 2011

У меня есть вкладка в форме окна. Работает отлично, за исключением следующего примера. Когда я выбрал tabpage2, все элементы управления на tabpage1 возвращают свое свойство visible как FALSE, что на самом деле не соответствует действительности, поскольку все они установлены на visible = false.

Полагаю, это потому, что для tabpage1 установлено значение visible = false, поэтому все дочерние элементы управления наследуют FALSE.

Конечно, если выбран tabpage1, все элементы управления возвращают правильное значение для видимого свойства.

Должен быть обходной путь. У кого-нибудь есть решение?

Ответы [ 3 ]

11 голосов
/ 13 января 2011

Свойство Visible немного особенное, его метод получения не возвращает назначенное вами значение.Он сообщает вам, действительно ли элемент управления виден .Что это не так, если он размещен на вкладке, которая не выбрана.Это сделано специально.

Получение фактического состояния "намеревается быть видимым" не поддерживаетсяВы получите его из GetState (2), но это внутренний метод.Если вы действительно в отчаянии, вы можете использовать Reflection.Но правильный способ - просто следить за этим самостоятельно.

1 голос
/ 13 января 2011

Поскольку свойство Visible вашей панели работает не так, как вы ожидаете, попробуйте установить для свойства Tag Panel то или иное значение, и используйте его, чтобы определить, может ли произойти сбой проверки.

0 голосов
/ 13 января 2011

Создание небольшого проекта для подтверждения этого, если вы проверите свойство Visible любого элемента управления на вкладке, которая не выбрана в настоящий момент, она вернет false, поскольку элемент управления не видимый.

Если вы пытаетесь определить, какую вкладку просматривает пользователь в данный момент, лучше проверить свойство SelectedTab или SelectedIndex в TabControl.

...