自定义控件的问题~帮顶有分!

xiyun 2006-06-04 11:56:35
我从一个控件派生了一个自定义控件,在构造函数里添加了一些代码:比如说我继承的是ComboBox,我在派生的类的构造函数里对ComboBox添加了2项选项,然后我将这个自定义控件放到Form上后,在form的构造函数里又自动的添加了这2个选项,并且,我只要在设计器里每对这个控件作出改动,就会自动的又添加2个选项。。。
我想知道如何能使我在构造函数里添加的选项不会在Form里又再次被添加
...全文
369 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiyun 2006-06-17
  • 打赏
  • 举报
回复
问题算是解决了
用ShouldSerrilizeItems这个属性解决的,不过有个后遗症。。。不能通过设计器修改那个被重载的属性了

结贴了
mhxcy 2006-06-14
  • 打赏
  • 举报
回复
allismine 2006-06-13
  • 打赏
  • 举报
回复
感觉是因为每次刷新造成的,考虑不让这个地方刷新或者在Page_load中,对这段代码放在Page.IsPostedBack等于false中,那样只有在初始化该页面时才加载自定义控件,而在刷新或者IE返回等不加载该控件。
tdtdtdtdtd123 2006-06-11
  • 打赏
  • 举报
回复
帮顶
lalac 2006-06-10
  • 打赏
  • 举报
回复
其实原因是这样的,微软的Designer在构造ComboBox时会判断当前的Items是否为默认值,通常可以使用DefaultValue或者ShouldSerrilizeItems来得到这个状态。另外,在ComboBox的ObjectCollection里面还有一些其他操作,也会影响IDE生成代码。

回到楼主的问题,当楼主在构造函数里添加了几项到Items里之后,默认情况下,IDE会自己在生成Code时把现有Items里的项再加一遍,而构造函数还是会被执行,这样Items里就出现了两遍所添加的项了。

处理办法有:
1、修改Items的DefaultValue或者重写ShouldSerrilizeItems方法,让他们在有你添加的项时返回Flase。
2、如果上面的还不能达到结果,建议重写Items属性和ObjectCollection类,这样就可以完全自己控制代码生成了。
Ivony 2006-06-09
  • 打赏
  • 举报
回复
与ASP有什么关系?

在构造函数里面,对象还没构造好,谁能给一个属性赋值,所以DesignMode属性只能在OnInit等方法内使用。

ToolboxDataAttribute可以控制你的控件拖到设计器上自动生成的代码。
amandag 2006-06-09
  • 打赏
  • 举报
回复
不懂,帮顶
xiyun 2006-06-09
  • 打赏
  • 举报
回复
lvony。。我的不是asp的
skyline81 2006-06-09
  • 打赏
  • 举报
回复
帮顶
tdtdtdtdtd123 2006-06-07
  • 打赏
  • 举报
回复
up budong
Ivony 2006-06-06
  • 打赏
  • 举报
回复
不清楚为什么会有这样的需求,其实把这个操作放到一个方法中去就肯定不会出问题了。1.1里面也通过判断HttpContext.Current是否为空,2.0里面判断DesignMode属性都能知道是不是在设计期,在设计期跳过这些代码也是一个办法……
Ivony 2006-06-06
  • 打赏
  • 举报
回复
尝试重写OnInit方法,在里面加入项。
ilovejolly 2006-06-06
  • 打赏
  • 举报
回复
mark
Ivony 2006-06-06
  • 打赏
  • 举报
回复
如果你是这种需求,可以尝试用ToolboxDataAttribute看看能不能解决问题。
Ivony 2006-06-06
  • 打赏
  • 举报
回复
楼上的,DesignMode 这个属性完全无效。。。


别告诉我你在构造函数里面判断……自己想一下这个属性被赋值的时机。
xiyun 2006-06-06
  • 打赏
  • 举报
回复
楼上的,DesignMode 这个属性完全无效。。。
我放到构造函数的目的是为了在其他地方直接从ToolBox里拉出来放到界面上就可以了,不用再写任何代码了。
BlueDog 2006-06-05
  • 打赏
  • 举报
回复
可以用静态构造函数添加。不过你这两项是不是所有该控件全部有的呀,如果是就没问题
KylinChina 2006-06-05
  • 打赏
  • 举报
回复
up
elivehai 2006-06-05
  • 打赏
  • 举报
回复
帮顶了。。
liminlovemama 2006-06-05
  • 打赏
  • 举报
回复
不明白....郁闷...
加载更多回复(6)

17,748

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧