Как я могу определить, когда элемент управления больше не виден? - PullRequest
2 голосов
/ 08 июля 2010

В моем текущем приложении у меня есть элемент управления Tree на странице TabControl, которая находится внутри панели элемента управления SplitContainer.Таким образом, древовидный элемент управления можно скрыть, либо скрыв панель SplitContainer, либо переключившись на другую TabPage в TabControl.

В меню формы есть команды, которые действуют на текущий выбранный узел дерева.Я не хочу, чтобы эти опции были включены, когда пользователь не может видеть то, что выбрано.

Существует ли простой способ определить, когда TreeView выходит из поля зрения без подписки на события как TabControl, так иСплитКонтейнер отдельно?

Ответы [ 3 ]

1 голос
/ 08 июля 2010

Вы можете создать переменную логического члена.В событии с табуляцией проверьте, выбрана ли вкладка древовидного списка, и установите переменную соответствующим образом.Также подпишитесь на событие, которое срабатывает при изменении размера представления сплиттера.Проверьте ширину или высоту разделителя, чтобы увидеть, не скрыт ли вид дерева.Если это так, установите переменную здесь.Тогда все, что вам нужно сделать, это проверить вашу новую переменную-член.

0 голосов
/ 15 мая 2011
if(!myControl.Visible)
{
   // Control is not visible.
}

или

if(myControl.Visible == false)
{
   // Control is not visible.
}

Или, возможно, лучшим вариантом было бы добавить обработчик к событию VisibleChanged в коде (или с помощью вкладки «События» в представлении конструктора):

void myControl_VisibleChanged(object sender, EventArgs e)
{
            TreeView tView = sender as TreeView ;
            if (tView.Visible)
            {
                  // Do something.
            }
            else
            {
                 // Do something.
            }
}
0 голосов
/ 08 июля 2010

Проверьте свойство VisView TreeView.Существует также событие VisibleChanged.

...