Пользовательские элементы управления скрыть и показать - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть пара пользовательских элементов управления, которые я показываю в своей основной форме.

Итак, скажем, вот что я хочу:

Sub Show_Control1()
UserControl1.Show
'CODE TO HIDE EVERY OTHER DISPLAYED USER CONTROL ON THE MAIN FORM
End sub

прямо сейчас я должен скрыть их одинодин со скрыть, потому что я не знаю, какая текущая форма отображается.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

Я попробовал вашу ситуацию в приложении Windows Forms (.NET 4), и сработало следующее.Я не уверен, почему ваш способ использования GetType(T1) Is GetType(T2) не работает (возможно, у него другая семантика, например, он не учитывает наследование), но вы можете использовать это вместо этого:

Sub Show1()
    For Each ctrl As Control In Controls
        If TypeOf ctrl Is UserControl Then
            ctrl.Hide()
        End If
    Next
    UserControl11.Show()
End Sub

Обновление:

Я проверил MSDN, чтобы увидеть, почему ваш код не работает.Во-первых, оператор TypeOf .. Is используется для проверки совместимости типа объекта с другим.Вот что написано в статье MSDN (ссылка: ключевое слово TypeOf ):

Ключевое слово TypeOf вводит предложение сравнения, которое проверяет, является ли объект производным от конкретного типа или реализует его,например, интерфейс.

Однако вы используете ключевое слово Is (очень отличающееся от того, которое используется в C # для проверки того, принадлежит ли объект какому-то определенному типу).Ключевое слово «Is» используется для проверки, ссылаются ли две ссылки на один и тот же объект.Вот что говорит MSDN (ссылка: Is ключевое слово ):

[Is] Сравнивает две переменные ссылки на объект.

Так что я был прав:вы используете оператор с другой семантикой, чем ваши намерения.Я редко пишу код VB .NET в наши дни.Хороший вопрос.

0 голосов
/ 08 февраля 2012

Попробуйте:

Sub Show_Control1()
For Each cont In Me.Controls
    cont.Hide
Next cont
UserControl1.Show
End sub

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...