多个控件布局

时间:2014-08-29 07:06:30

标签: c# .net winforms layout

我有一个WinForms应用程序,此时功能齐全,大约有15-20个元素。我希望能够在两个视图之间切换,一个'扩展'观点和另一个是一个简单的'图。

'扩展'视图将与现在完全一样,简单' view会隐藏除1个控件之外的所有控件,并添加5个其他控件。

最好的方法是什么?我想只是逐个设置.Visible属性来隐藏东西并不是一个很好的做法。我也不希望有任何重复的控件或代码。

我显然应该在开始时考虑过这个问题,但这需要我来。任何指向正确的方向将不胜感激。

2 个答案:

答案 0 :(得分:0)

在您的应用程序中添加2个面板控件,并将所有"简单"控制在一个面板上,所有"扩展"第二个面板上的控件。

Panel panelSimple = new Panel();
panelSimple.Location = new Point(1,1);
panelSimple.Size = new Size(500,500);
panelSimple.Controls.Add(simpleTexbox); 
panelSimple.Controls.Add...

Panel panelExtended= new Panel();
panelExtended.Location = new Point(1,1);
panelExtended.Size = new Size(500,500);
panelExtended.Controls.Add(extendedButton); 
panelExtended.Controls.Add...

然后只需将面板的.Visible标志设置为false或true,具体取决于您所需要的(您需要确保两者同时不可见或不可见)

答案 1 :(得分:0)

这就是我最终要做的事情。我有两个相同大小和位置的面板,axWindowsMediaPlayer是我想在两者上使用的控件:

if (panelExtendedLayout.Visible)
{
    panelSimpleLayout.Visible = false;
    panelExtendedLayout.Visible = true;

    panelExtendedLayout.Controls.Remove(axWindowsMediaPlayer);
    panelSimpleLayout.Controls.Add(axWindowsMediaPlayer);
}
else
{
    panelSimpleLayout.Visible = true;
    panelExtendedLayout.Visible = false;

    panelExtendedLayout.Controls.Remove(axWindowsMediaPlayer);
    panelSimpleLayout.Controls.Add(axWindowsMediaPlayer);
}

这可以看起来非常无缝,视频一直播放,所有其他控件在点击按钮时显示/消失。我确实遇到了一个初始问题,panelSimiple由于我的拖拽而被设置为panelExtended的子项,并将其放到相同的空间中,我必须在设计代码中对其进行编辑。