【发布时间】:2011-08-09 09:33:04
【问题描述】:
我有一个名为ScanFolder 的表单,我需要另一个表单,它需要与ScanFolder 非常相似,所以我决定使用form inheritance。但是对构造函数似乎有些误解。
ScanFolder 看起来像:
public partial class ScanFolder : Form
{
public ScanFolder(MainForm parent, bool[] autoModes, GlobalMethods GMethodsClass)
{
//Doing something with parameters
}
}
我尝试像这样继承Form:
public partial class Arch2 : ScanFolder
{
}
但我收到警告 Constructor on type 'mhmm.ScanFolder' not found,并且Arch2 Form 编辑模式也有错误,我看到调用堆栈错误。
所以我尝试了这样的事情:
public partial class Arch2 : ScanFolder
{
public Arch2(MainForm parent, bool[] autoModes, GlobalMethods GMethodsClass)
: base(parent, autoModes, GMethodsClass)
{
}
}
但还是一样。
如您所见,我显然不知道自己在做什么。我想要实现的是让Arch2 看起来与ScanFolder 相同,所以我可以在设计器视图中看到它并覆盖一些方法或事件处理程序。
【问题讨论】:
-
即使你得到这个工作,如果没有默认构造函数(即不接受任何参数的构造函数),你也无法在设计器中显示表单。
-
所以如果我去掉所有的参数并在Form中找到任何其他方式使用它们,我将能够在设计视图中看到我继承的表单?
-
您可以在 ScanFolder 中添加另一个方法来初始化参数 InitParams(MainForm parent, bool[] autoModes, GlobalMethods GMethodsClass) 并将构造函数留空以仅处理 GUI
标签: c# .net winforms inheritance constructor