【发布时间】:2011-08-09 17:36:33
【问题描述】:
我为我的 Winform 应用程序创建了几个从 UserControl 继承的控件。根据需要,它们都有无参数的构造函数。当我将它们放到我的主窗体上时,我在设计时在 Visual Studio 中收到一个错误,它无法呈现窗体。
我发现,在窗体的 Designer.cs 文件中,我的控件被实例化,IDE 在那里放置了一行调用我的设置器之一。 BlockKey = 0。好吧,setter 后面的代码正在调用其他代码,很快就会抛出 NullReferenceException,因为表单没有运行;那个时候其他代码还没有准备好产生任何东西。
如果我手动删除 setter 行,错误就会消失。但是关闭并重新打开或重新编译,IDE 会将行重新放入。我尝试在 UserControl 中使用 [DefaultValue(false)] 装饰 setter,认为这会抑制对 setter 的设计时调用,但事实并非如此。
我怎样才能摆脱设计器中的那条线?或者我是否应该在 setter 中编写一些预防性代码?
【问题讨论】:
标签: c# winforms visual-studio visual-studio-2010 code-generation