【问题标题】:How can I detect when a control is no longer visible?如何检测控件何时不再可见?
【发布时间】:2010-07-07 21:12:17
【问题描述】:

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

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

是否有一种简单的方法可以确定 TreeView 何时消失而不分别订阅 TabControl 和 SplitContainer 的事件?

【问题讨论】:

    标签: c# .net winforms tabcontrol splitcontainer


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:
        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.
                    }
        }
        

        【讨论】:

          猜你喜欢
          • 2011-10-05
          • 2017-07-25
          • 1970-01-01
          • 2020-07-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-02-02
          相关资源
          最近更新 更多