Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检测控件何时不再可见?_C#_.net_Winforms_Tabcontrol_Splitcontainer - Fatal编程技术网

C# 如何检测控件何时不再可见?

C# 如何检测控件何时不再可见?,c#,.net,winforms,tabcontrol,splitcontainer,C#,.net,Winforms,Tabcontrol,Splitcontainer,在我当前的应用程序中,我在SplitContainer控件的面板内的TabControl页面上有一个树控件。因此,可以通过隐藏SplitContainer面板或切换到TabControl中的另一个TabPage来隐藏树控件 在表单的菜单中,有一些命令作用于树中当前选定的节点。我不希望在用户看不到所选内容时启用这些选项 是否有一种简单的方法可以确定TreeView何时会退出视图,而不分别订阅TabControl和SplitContainer的事件?测试TreeView的Visible属性。还有一个

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

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


是否有一种简单的方法可以确定TreeView何时会退出视图,而不分别订阅TabControl和SplitContainer的事件?

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

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

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

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

if(myControl.Visible == false)
{
   // Control is not visible.
}
void myControl_VisibleChanged(object sender, EventArgs e)
{
            TreeView tView = sender as TreeView ;
            if (tView.Visible)
            {
                  // Do something.
            }
            else
            {
                 // Do something.
            }
}