创建控件时出错 - 自定义控件

时间:2008-12-18 21:29:24

标签: c# composite-controls

我有一个自定义控件,它工作正常......除了控件无法在设计时呈现。 (我正在使用VS 2008)

我想很多开发自定义控件的人遇到这个问题...我得到的错误是“Error Creating Control - CustomControlName”对象引用没有设置为对象的实例。

我想要一个解决方法。或至少调试这个...(因为这是设计时间问题如何调试?)

我试过OnInit上的(!DesignMode)代码,OnPreRender,RenderContents,CreateChildControls方法(我只是在黑暗中拍摄)......

帮忙。我真的希望这不是VS的错误!

4 个答案:

答案 0 :(得分:1)

BFree的注释是最有可能发生的问题,因为设计视图中显示的控件需要无参数构造函数,因为设计查看器不知道您通常如何实例化控件。

如果你有一个无参数构造函数,你可以粘贴一些代码来显示正在发生的事情吗?

答案 1 :(得分:0)

正如格伦提到的,第一个问题可能不是无参数构造函数。

第二种可能是你在OnLoad或你提到的其他方法中调用方法,这些方法有未初始化的参数或者某种类型的数据库调用尝试等通常在运行时完成。

除非他们最近修复了这个错误*并且我不知道,要记住的是DesignMode属性适用于第一级和第二级嵌套控件,但除此之外它通常无法正常工作。 (例如包含另一个UserControl [2]的UserControl [1]的表单,DesignMode在表单和[1]上工作,但不在[2]上工作。)

同意Glenn,看到一些代码会有所帮助。

*根据我最近使用嵌套用户控件的经验,它尚未修复。

答案 2 :(得分:0)

OnPreRender& CreateChildControls方法正在调用this.Page。您可能想尝试将它们包装在

if (this.Page != null)
{
.....
}

因为我认为你不会在那时拥有一个Page对象。我漂亮肯定PreRender&将在设计视图中调用CreateChildControls。我有一段时间没有编写自定义服务器控件,所以我可能错了(最近在MVC工作)。

答案 3 :(得分:0)

格伦,你得到一个VS错误但没有修复的错误已经发布。