为什么VS2017会丢失我的派生控件?

时间:2018-05-22 16:18:13

标签: c# winforms visual-studio inheritance controls

在我的应用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_CancelSearchDRT_Button_StartSearch),并成功将它们放到我的主窗体上。一切都很好,但最终,我将打开主要的form.cs [设计](即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设计器窗口重新应用丢失的控件,但问题只是重新使用新应用的控件

到底发生了什么事?有没有办法从这种情况中恢复过来?

1 个答案:

答案 0 :(得分:1)

这很可能是Designer无法清除/重新加载其缓存的问题。你无能为力。在过去我:

  • 关闭并重新打开所有拥有用户控件的设计师
  • 将所有控件放在一个单独的项目中(在同一个解决方案中)
  • 将所有控件放在单独的解决方案/ Visual Studio实例中,并设置对控件的dll(甚至是nuget包)的正确引用

前两个选项我取得了不同的成功。重新打开设计师不是很方便,也不起作用。

最后一个选项是最好的但也是最烦人的,因为每次调整都需要重建项目并更新参考/包。

还要确保您创建的所有控件都具有公共默认构造函数,并在使用此构造函数时运行良好。

相关问题