首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建控件时出错-自定义控件

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

Stack Overflow用户
提问于 2008-12-18 21:29:24
回答 4查看 2.7K关注 0票数 3

我有一个自定义控件,它的工作fine...except该控件不能在设计时呈现。(我使用的是VS2008)

我认为许多开发自定义控件的人都会遇到这个problem...The错误,我得到的错误是“创建控件时出错- CustomControlName”对象引用没有设置为对象的实例。

我想找个合适的工作。或者至少调试这个...(既然这是一个设计时的问题,如何调试呢?)

我已经在OnInit,OnPreRender,RenderContents,CreateChildControls方法上尝试了if( !DesignMode)代码(我只是在黑暗中拍摄)……

请帮帮我。我真的希望这不是一个VS bug!

EN

回答 4

Stack Overflow用户

发布于 2008-12-19 05:48:28

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

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

票数 1
EN

Stack Overflow用户

发布于 2008-12-19 06:28:11

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

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

除非他们最近修复了这个bug,但我不知道,要记住的是,DesignMode属性适用于第一层和第二层嵌套控件,但除此之外,它通常不能正常工作。(例如,form包含一个包含另一个UserControl2的UserControl1,DesignMode对form和1有效,但对2无效)。

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

*从我最近使用嵌套用户控件的经验来看,它还没有修复。

票数 0
EN

Stack Overflow用户

发布于 2008-12-24 00:46:31

在您的OnPreRender & CreateChildControls方法中,它调用this.Page。您可能希望尝试将它们包装在

代码语言:javascript
复制
if (this.Page != null)
{
.....
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/379355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档