2011-01-13 5 views
4

У меня есть элемент управления вкладкой в ​​форме окна. Он отлично работает, за исключением следующего примера. Когда у меня есть tabpage2, все элементы управления на tabpage1 возвращают их visible как FALSE, что фактически неверно, потому что все они установлены на visible = false.Элементы управления на вкладке (вкладка управления), которая не отображается return Visible = false

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

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

Должна быть работа вокруг. у кого-нибудь есть решение?

+1

Зачем вам нужен обходной путь? Элементы управления не видны, когда их родительская вкладка не отображается. Это те же правила, что и другое окно. Возможно, если бы вы сказали нам, что вы пытаетесь сделать, мы можем предложить альтернативные решения. –

+0

Если для свойства 'visible' элемента управления установлено значение false, то, естественно, оно вернет false при проверке этого свойства. Я неправильно понял? – JYelton

+0

Уверен ... его элемент управления вкладками с несколькими вкладками. В каждом табуляции есть несколько элементов управления там. Мне нужно проверить, есть ли панель ALERT, которая у меня есть. Если это тогда, я не выполняю процедуру проверки что я запускаю ... но я проверяю видимое свойство панели оповещений, когда tabpage2 открыто, и его на tabpage1 ... если это имеет смысл – Martin

ответ

1

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

0

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

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

+0

Нет, я пытаюсь проверить, видима ли панель = true .. это означает, что у меня есть ошибка :-) Возможно, мне нужно просто использовать переменную уровня bool класса .... – Martin

+0

Панель на первой вкладке также будет если значение этой закладки больше не выбрано, для его видимого свойства установлено значение false. (Убедитесь, что вы используете '==' вместо '=' для проверки равенства.) Если вы программно устанавливаете видимость панели, то вы не можете полагаться на ее настройку, в то время как ее родительская вкладка больше не активна. Вы захотите создать отдельную переменную, как вы предложили. – JYelton

11

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

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

+0

+1 Это проливает свет на то, что на самом деле происходит с этим имуществом, спасибо. – JYelton

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

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