5

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

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

有更好的想法吗?

4

3 回答 3

8

将控件剪切到剪贴板将切断事件处理程序,因此最好远离设计器中的剪切和粘贴。

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

文档大纲窗口如下所示:

在此处输入图像描述

于 2012-05-31T15:09:17.777 回答
1

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

您可以取消停靠 panel1,然后将面板 2 从 panel1 移到 Form1 背景上。我也为此苦苦挣扎。这一直是我的工作,我也发现剪切和粘贴它会导致很多头痛。它也可以在代码中修复,使用设计器文件

于 2012-05-31T14:56:38.037 回答
0

更改为停靠时面板无法更改父级!!!或者我真的不理解你的问题。

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

yourPanel.Controls.Remove(yourOtherPanel);
yourForm.Controls.Add(yourOtherPanel);
yourOtherPanel.Dock = .....;
于 2012-05-31T14:29:59.497 回答