【发布时间】:2018-11-01 11:52:59
【问题描述】:
在我的应用程序namespace = DRT 中,我正在创建从相应的 Windows 控件类派生的控件类(例如按钮、文本框),例如
internal abstract class DRT_Button_Abstract : Button
{
....
}
internal class DRT_Button_CancelSearch : DRT_Button_Abstract
{
....
}
internal class DRT_Button_StartSearch : DRT_Button_Abstract
{
....
}
我目前共有 13 个派生类,它们派生自我的一个摘要或 Windows 控件类。成功构建后,我在工具箱上看到了我的控件类(例如,DRT_Button_CancelSearch 和DRT_Button_StartSearch),我成功地将它们放到了我的主窗体上。暂时一切都很好,但最终,我将打开主 form.cs [Design](即 UI 设计器),它会显示错误 The variable '{control property name}' is either undeclared or was never assigned. 用于我的某些控件组合。
当我检查主窗体 Designer.cs 文件时,除了预期的 new 语句外,所有控件的预期代码都存在。它们不存在于主窗体 Designer.cs 文件中。例如,我希望看到 this.drt_Button_CancelSearch = new DRT.DRT_Button_CancelSearch(); 但它不见了
我已经尝试忽略错误,进入 UI 设计器窗口以重新应用丢失的控件,但问题只是在新应用的控件上重复
这到底是怎么回事?有没有办法从这种情况中恢复过来?
【问题讨论】:
-
所有派生控件都有默认构造函数吗?您是否尝试将它们标记为
public而不是internal? -
@RonBeyer:对于默认构造函数:如果我理解正确,我想我错过了一些。对于我的每个抽象类和每个派生类,我在类的构造函数定义中添加了
: base(),例如public DRT_Button_Abstract(): base()和public DRT_Button_CancelSearch() : base()。正确的?还将全部设置为public并重试
标签: c# winforms visual-studio inheritance controls