C#面板对接问题

时间:2012-05-31 14:15:37

标签: c# winforms panel docking

Windows Forms项目,仅在设计器中工作(即在编译之前使用鼠标)。我有一个表格和2个面板。 panel1在form1中停靠(选项 - 填充)。 panel2也在form1中停靠(填充)。另外,panel2位于panel1的前面(后者隐藏在前者后面)。我的问题是 - 当我取消停靠panel2并再次停靠它 - 它停靠在panel1(panel1成为它的父级)而不是form1。如何更改panel2的父级?

我到目前为止唯一解决的问题是切割(ctrl + x)panel2,选择form1然后粘贴(ctrl + v)panel2,但由于某种原因,这会删除panel2控件和代码之间的所有连接(对于单击panel2上的按钮的示例不再起作用,尽管处理事件的函数仍然存在。)

有更好的想法吗?

3 个答案:

答案 0 :(得分:6)

通过切断事件处理程序来剪切控件到剪贴板,因此最好不要在设计器中剪切和粘贴。

由于您使用的是设计器,请从Visual Studio的Document Outline菜单中打开View - Other Windows表单。使用箭头按钮正确设置控件的父级或停靠顺序。

“文档大纲”窗口如下所示:

enter image description here

答案 1 :(得分:1)

似乎人们喜欢我的评论答案,所以我把它放在这里作为答案

您可以取消停靠panel1,然后将Panel1从panel1移到Form1背景上。我也在努力解决这个问题。这总是我的工作,我也发现切割和粘贴它会引起很多的骚扰。它也可以使用设计器文件

在代码中修复

答案 2 :(得分:0)

当您更改时,面板无法更改父级! 或者我真的没有理解你的问题。

但是......如果你想改变父母。只需删除Panel控件列表的面板,然后将其添加到表单控件列表中。

yourPanel.Controls.Remove(yourOtherPanel);
yourForm.Controls.Add(yourOtherPanel);
yourOtherPanel.Dock = .....;