【问题标题】:How can I hide a panel that is on a SplitContainer?如何隐藏 SplitContainer 上的面板?
【发布时间】:2009-03-14 06:23:47
【问题描述】:

我想在拆分容器上隐藏 panel2 并让 panel1 使用该空间。我希望设置 Panel2Collapsed 可以解决问题,但没有运气。想法?

【问题讨论】:

  • 将 Panel2Collapsed 设置为 true 时会发生什么? Panel2 是否保持可见?

标签: c# .net winforms


【解决方案1】:

这在类似的情况下对我有用:

splitContainer1.Panel2Collapsed = true;
splitContainer1.Panel2.Hide();

我希望第二个面板在某些情况下根本不可见,所以我以这种方式实现了它。

【讨论】:

  • 如果不设置SplitterDistance并调用Hide(),Panel2的哪一部分是可见的?
  • 如果我没记错的话,如果你没有设置 SplitterDistance,那么在 Panel1 的远端鼠标光标会改变,很明显那里还有另一个面板。
  • 但是当用户调整表单大小时会发生什么
  • @Nikos: 嗯...我无法重新创建:-/ Splitter 控件存在这种问题,但我认为 SplitContainer 的全部目的是取消那些问题...
  • @CrashCodes:如果拆分容器停靠或正确锚定,它将随表单调整大小,并且 Panel1 将保持停靠以填充整个拆分容器。
【解决方案2】:

在表单设计器中将Panel2Collapsed 属性设置为true 并以编程方式两者都按您希望的方式工作(即Panel1 然后占据所有空间)......所以肯定有其他事情发生。

【讨论】:

    【解决方案3】:
                this.splitContainerControl1.Panel2.Hide();
                this.splitContainerControl1.Panel2.Height = 0;
                this.splitContainerControl1.IsSplitterFixed = true; 
    

    这对我有用。

    【讨论】:

      【解决方案4】:

      splitContainer1.PanelVisibility = SplitPanelVisibility.Panel1

      【讨论】:

      • 不存在这样的属性。
      • 它适用于 Devexpress SplitContainerControl。也许这里不是正确的地方,但它对我有用,谢谢。
      【解决方案5】:

      在 Visual Studio 2017 中,这是一个小技巧。这就是我必须为我工作的。 MyControl 在 panel1 内。

      'vb.net:
      
      MySplitContainer.Panel2Collapsed = True
      MySplitContainer.Panel2.Hide()
      MySplitContainer.SplitterDistance = MySplitContainer.Height
      MySplitContainer.Panel1.Anchor = AnchorStyles.Bottom
      MyControl.Height = MySplitContainer.Height
      
      'for C# just add a semi-colon onto the end of each line and it should work.
      

      【讨论】:

        【解决方案6】:

        尝试设置 panel2.Visible = false。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-06-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-18
          相关资源
          最近更新 更多