如何检测控件何时不可见?

时间:2010-07-07 21:12:17

标签: c# .net winforms tabcontrol splitcontainer

在我当前的应用程序中,我在TabControl的页面上有一个Tree控件,该控件位于SplitContainer控件的面板内。因此,可以通过隐藏SplitContainer面板或切换到TabControl中的另一个TabPage来隐藏树控件。

在表单的菜单中,有一些命令可以作用于树中当前选定的节点。当用户看不到所选内容时,我不希望启用这些选项。

是否有一种简单的方法可以确定TreeView何时离开视图而不单独订阅TabControl和SplitContainer的事件?

3 个答案:

答案 0 :(得分:1)

您可以创建一个布尔成员变量。在tabchanged事件中,测试是否选择了treeview选项卡并适当地设置变量。此外,订阅更改拆分器视图大小时触发的事件。测试拆分器的宽度或高度,以查看是否隐藏了树视图。如果是,请将变量设置为。然后你需要做的就是测试你的新成员变量。

答案 1 :(得分:0)

测试TreeView的Visible属性。还有一个VisibleChanged事件。

答案 2 :(得分:0)

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

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

或者,更好的选择可能是在代码中(或使用Designer视图中的Events选项卡)向VisibleChanged事件添加处理程序:

void myControl_VisibleChanged(object sender, EventArgs e)
{
            TreeView tView = sender as TreeView ;
            if (tView.Visible)
            {
                  // Do something.
            }
            else
            {
                 // Do something.
            }
}