【发布时间】:2017-04-07 09:12:00
【问题描述】:
我在派生名为 PrinterForm 的表单时遇到问题
这是parent表单的代码:
public partial class PrinterForm : Form
{
public PrinterForm()
{
InitializeComponent();
}
private void PrinterForm_Load(object sender, EventArgs e)
{
LoadSomething();
}
private void LoadSomething()
{
//Return a List<dynamic> of Dapper (query work fine!). The function is already used elsewhere so no problem here
var list = new DapperRepository().GetAllOfSomething();
}
}
这是子窗体的代码:
public partial class FormChildren : PrinterForm
{
public FormChildren()
{
InitializeComponent();
}
}
当我尝试访问FormChildren 设计器时,会报告一个错误并且未显示。
报告给我的错误如下:
System.Windows.Forms.Design.IEventHandlerService
尝试评论LoadSomething函数可以正确显示设计器。
有什么问题?
【问题讨论】:
-
是在运行应用程序时还是在 Visual Studio Designer 中发生的?
-
@krw12572 Visual Studio 设计师
-
从
FormChildren类的代码中,您似乎正在访问父类中的 InitializeComponent 方法,或者您创建了另一个 WindowsForm(FormChildren) 并试图继承PrinterForm。这两个选项似乎都不正确。如果你想继承一个表单,那么只需创建一个简单的类并继承已经创建的PrinterForm。然后看看你的问题是否仍然存在。 -
@krw12572 如您所述,我尝试创建一个简单的类,并派生父类。结果一样!
-
@LorenzoBelfanti 当您在设计器中打开继承的表单时,将执行基本表单的构造函数。事实上,设计者创建了一个基本表单的实例并在其上放置控件。因此,例如附加在基本形式的构造函数中的基本形式的加载事件将被执行。要了解有关设计师如何工作的更多信息,请查看此帖子:Can't view designer when coding a form in C#。它还包含一个有趣的例子。你会发现它很有用。
标签: c# winforms inheritance windows-forms-designer form-load