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

C# 创建控件时出错-自定义控件,c#,composite-controls,C#,Composite Controls,我有一个自定义控件,它工作得很好…除了控件不能在设计时呈现。(我正在使用VS2008) 我想很多开发自定义控件的人都会遇到这个问题……我得到的错误是“创建控件时出错-CustomControlName”对象引用没有设置为对象的实例 我想找个工作。或者至少调试这个…(因为这是一个设计时问题,如何调试?) 我已经在OnInit、OnPreRender、RenderContent、CreateChildControls方法上尝试过if(!DesignMode)代码(我只是在黑暗中拍摄) 请帮忙。我真的

我有一个自定义控件,它工作得很好…除了控件不能在设计时呈现。(我正在使用VS2008)

我想很多开发自定义控件的人都会遇到这个问题……我得到的错误是“创建控件时出错-CustomControlName”对象引用没有设置为对象的实例

我想找个工作。或者至少调试这个…(因为这是一个设计时问题,如何调试?)

我已经在OnInit、OnPreRender、RenderContent、CreateChildControls方法上尝试过if(!DesignMode)代码(我只是在黑暗中拍摄)


请帮忙。我真的希望这不是一个VS错误

BFree的注释是最有可能出现的问题,对于要在设计视图中显示的控件,它需要一个无参数构造函数,因为设计查看器不知道通常如何实例化该控件


如果你有一个无参数构造函数,你能粘贴一些代码来显示发生了什么吗?

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

第二种可能是您在OnLoad期间调用方法,或者您提到的具有未初始化参数的其他方法,或者通常在运行时进行的某种数据库调用尝试等

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

同样同意Glenn的观点,看到一些代码也会有所帮助


*根据我最近使用嵌套用户控件的经验,它还没有被修复。

在您的
OnPreRender
&
CreateChildControls
方法中,它正在调用this.Page。你可以试着把它们包在一个盒子里

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

因为我认为此时不会有页面对象&我非常确定
PreRender
&
CreateChildControls
将在设计视图中调用。不过,我已经有一段时间没有编写自定义服务器控件了,所以我可能错了(最近一直在MVC中工作)。

Glenn,错误ur得到一个VS错误,并且还没有发布修复程序。

您的自定义控件有无参数构造函数吗?