2011-09-10 62 views
3

我想重叠面板,以便每当我点击一个按钮某个面板将可见。Visual C#/ WinForms面板

但是做这个工作是非常棘手的,因为面板不重叠。

for ex。我有面板1和面板2:

我做面板2相同的面板1, 每当我地定位在相同的位置... 有时,面板2成为面板1中的一员,每当我设置面板1对真面板2的可见性也显示出来。

我想要的是两个面板重叠在一起。

“顺便说一句,我正在做一个垂直的标签,这就是为什么我认为,隐藏,取消隐藏面板可能是我的最好的办法。

是否有可能使面板相互重叠?

回答

4

设计师正在努力争取让他们重叠。您需要使用一些小技巧来阻止底部面板吸取重叠的面板。把它重叠的面板稍微偏向左上方,以便它们真正重叠。然后将代码添加到窗体构造函数中,将其放在正确的位置:

public Form1() { 
     InitializeComponent(); 
     panel2.Location = panel1.Location; 
     panel2.Size = panel1.Size; // optional 
    } 

另一种方法是使用View + Other Windows + Document Layout。您可以将内部面板拖放到外部容器(表单)。但是,您必须手动编辑位置属性。

+0

+1:这是我总是隐藏*一个面板后面的另一个面板,当我不想有不同的'UserControl'选项实例的麻烦。如果有一种设计友好的重叠面板的方式会很好,就像隐藏的选项卡一样。 – IAbstract

+0

@IAbstract - 检查此:http://stackoverflow.com/questions/2340566/creating-wizards-for-windows-forms-in-c/2342320#2342320 –

0

它是绝对有可能有重叠的面板

你面临的问题是,GUI编辑器把你的面板当作容器(这是真的),只要你放置一个面板(包括其他面板) “嵌套”在此容器中。

要避免此行为,请首先放置一个面板并适当放置/调整大小。然后右键单击它并选择“锁定控件”。这将锁定所有当前的表单控件,并且您将能够将新控件(包括面板)直接放置在它们上方,而不用担心某些东西将被嵌套或以某种方式放置在现有容器内。

当然,你的控件可以重叠 - 只考虑订单或控制创作,这也将在表单定义它们的Z顺序 - 控制以后添加,后来绘制的,因此定位在那些之上较早加入。

编辑:不幸的是我没有我的回答完全正确。锁定面板并不能阻止他们完全吸入控制位置。但是在部分重叠的情况下,两个容器都是在相同的深度上创建的,所以在面板重叠的情况下不存在这个问题,正如问题中提到的那样。

+2

如果Lock Controls以这种方式工作,那将会很不错。实际上,锁定的面板仍然会吸住重叠的面板。尝试一下。 –

+0

谢谢!!!我看到这样的锁控制如何做:) :))顺便说一句,如何标记正确的答案为正确? –

+0

@Hand Passant:嗯......我在发布我的答案之前检查了它,但现在我发现有时它不起作用。无论如何,只有将面板完全置于现有容器内时,面板才会被吸起来,重叠仍然是可能的。但我会纠正我的回答 –

0

小组有一个名为位置的属性,您可以根据需要进行修改。只要你设法放置你的面板,使其得到正确的父母,你可以通过稍后改变位置属性来改变位置。真的不需要将设计代码放入构造函数或其他任何东西中。

并把在正确的父面板,只是有家长选择并双击面板控件工具栏上,而不是手动拖动它到表单中。真的没有必要试图与这个设计师对抗。