使用面板拆分Windows

时间:2018-07-13 22:12:37

标签: c# winforms split dock splitcontainer

我正在读一本Windows Forms书,我举了一个例子,对我来说很困惑。

enter image description here

这是两张图片,第一张是初始状态,第二张是用户单击“隐藏”按钮时的图片。 此表单包含两个拆分容器,一个水平容器,一个垂直容器,位于水平容器的右侧面板中。

这本书说:

  

对接设计的最大特点之一是它们可以轻松容纳隐藏   或修改后的控件。实施

     

此设计中,两个面板放置在   SplitContainer,一个名为pnlFileList,另一个名为pnlShow。   但是,一次仅显示这些面板之一。内容   窗口的其余部分会自动调整自身大小以适应   显示其他视图时


private void cmdHide_Click(object sender, System.EventArgs e)
{
    splitContainer1.Panel1Collapsed = true;
    pnlShow.Visible = true;
}
private void cmdShow_Click(object sender, System.EventArgs e)
{
    pnlShow.Visible = false;
    splitContainer1.Panel1Collapsed = false;
}

我做到了,但是问题出在SplitContainer的左面板合拢时出现的按钮。

我不知道将面板"pnlShow"放在何处
如果将其放在水平SplitContainer控件的右侧,它也会消失。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这本书的引用对我来说似乎不准确。您无法将pnlShow放置在SplitContainer的“左侧区域”内,因为一旦将Panel1Collapsed属性设置为true,它将不会显示。

相反,您可以将pnlShow放在SplitContainer的左侧,并将其Dock属性设置为Left。另外,在这种情况下,您似乎实际上不需要面板,因为它只包含一个按钮。您可以只使用一个按钮。无论如何,您的表单在设计时将如下所示:

Design-time view

然后,您的代码应该可以正常工作。

一些评论:

  • 当然,如果您决定使用不带面板的按钮,则需要使用YourButtonName.Visible而不是pnlShow.Visible
  • 如果您发现左侧的按钮(面板)覆盖了SplitContainer,则只需右键单击SplitContainer并选择“ Bring to front”。
  • 最好使用“ btn”作为按钮名称的前缀,而不是“ cmd”。后者是在经典的视觉基本语言中广泛使用的,因为因为它以前被称为CommandButton 。在.NET世界中,标准是使用“ btn”代替。

最后,根据我在以上最后一点中提到的内容和问题中的屏幕快照的外观,这本书似乎已经过时了,并且是基于.NET框架的早期版本编写的,因此除非您必须专门研究这本书,否则我建议您找到更新的书或教程。