您好我设置了一些子表单,所有子表单都继承自根表单,设置了几个按钮和徽标等,然后向下过滤到子节点。 我使用visual studio向导添加从root继承的子表单,它们自动声明为:
public partial class WelcomeForm : MynetInstaller.rootForm
我现在被要求调整子表单的大小并移动一个按钮,我希望通过简单地更改根表单并允许更改过滤来完成这些操作。
我遇到的两个问题是: 1 /我改变了大小,这根本不影响孩子,初始设置后似乎没有继承大小。
2 /我更改按钮的位置,这会导致所有子窗体断开,显示错误:
To prevent possible data loss before loading the designer, the following errors must be resolved:
'child' is not a child control of this parent.
Instances of this error (1)
1. Hide Call Stack
at System.Windows.Forms.Control.ControlCollection.GetChildIndex(Control child, Boolean throwException)
at System.Windows.Forms.Control.ControlCollection.SetChildIndexInternal(Control child, Int32 newIndex)
at System.Windows.Forms.Control.ControlCollection.SetChildIndex(Control child, Int32 newIndex)
at System.Windows.Forms.Design.ControlDesigner.DesignerControlCollection.SetChildIndex(Control child, Int32 newIndex)
如果我按继续它将加载页面,但不会移动按钮,如果我尝试运行它我会收到错误:
this.Controls.SetChildIndex(this.btnNext, 0);
话说:
'child' is not a child control
我注意到当我移动控件时它会停止锁定,但手动更改它无济于事。
答案 0 :(得分:2)
基本表单的大小是继承的,设计人员通常会阻止在派生表单中再次设置大小。但不幸的事情可能发生,子形式可能会被巧妙地改变一次。或者它可能是在与设计基本表格的机器上具有不同视频DPI设置的机器上设计的。
我可以想到只有解决方法,编辑设计器生成的代码。在Solution Explorer窗口中,打开子表单旁边的节点,然后双击Designer.cs文件。展开标记为“Windows窗体设计器生成的代码”的区域,并找到ClientSize属性的分配。删除它。
不知道你的第二个问题是怎么回事,这不是一个正常的问题。看一下操作按钮时设计器生成的代码会发生什么。
答案 1 :(得分:0)
对于“'child'不是子控件”问题,您必须从.designer.cs文件.setChildIndex命令行中删除。