社区
.NET Framework
帖子详情
自定义控件的问题~帮顶有分!
xiyun
2006-06-04 11:56:35
我从一个控件派生了一个自定义控件,在构造函数里添加了一些代码:比如说我继承的是ComboBox,我在派生的类的构造函数里对ComboBox添加了2项选项,然后我将这个自定义控件放到Form上后,在form的构造函数里又自动的添加了这2个选项,并且,我只要在设计器里每对这个控件作出改动,就会自动的又添加2个选项。。。
我想知道如何能使我在构造函数里添加的选项不会在Form里又再次被添加
...全文
452
26
打赏
收藏
自定义控件的问题~帮顶有分!
我从一个控件派生了一个自定义控件,在构造函数里添加了一些代码:比如说我继承的是ComboBox,我在派生的类的构造函数里对ComboBox添加了2项选项,然后我将这个自定义控件放到Form上后,在form的构造函数里又自动的添加了这2个选项,并且,我只要在设计器里每对这个控件作出改动,就会自动的又添加2个选项。。。 我想知道如何能使我在构造函数里添加的选项不会在Form里又再次被添加
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
Qt
自定义控件
的创建与初步使用(一)之
自定义控件
的创建步骤
本篇博客主要介绍用QLabel类显示图片的Qt
自定义控件
创建步骤。先新建Qt4设计师
自定义控件
工程,设置项目名称等生成相关文件和插件;接着编写
自定义控件
界面,添加UI界面、QLabel类,构建.dll和.lib文件并拷贝到指定路径,最后可在Qt中使用该
自定义控件
。
使用C#vs2012
自定义控件
,快来瞧瞧~
博客介绍了VS中
自定义控件
的方法。先说明了
自定义控件
有组件集合复用、原生控件全自写、控件扩展重写三种实现方式,接着详细阐述完成
自定义控件
功能的步骤,包括新建项目、导包、编写代码、生成解决方案、创建窗体项目等,还提到运行时需重新生成类库。
LabVIEW自定义布尔控件合集
该博客介绍了LabVIEW自定义布尔控件合集,提供“LabVIEW自定义布尔控件合集(~1000种).rar”文件下载,包含近千种控件,风格多样、格式统一、实用性强。还给出下载解压、导入使用建议,提醒仅供学习研究,遇
问题
可提Issue。
QML自定义TextField控件
本文介绍如何在QML中自定义TextField控件,包括设置字体、颜色、对齐方式及正则验证等,并展示了不同输入类型的正则表达式示例。
uipath
自定义控件
本文介绍了如何在UiPath中创建
自定义控件
以满足特定需求。首先,你需要Visual Studio、NuGet Package Explorer和UiPath。接着,在Visual Studio中创建类库项目并编写代码。完成后,生成DLL文件。然后,通过NuGet Package Explorer创建包,添加DLL文件并编辑控件信息。最后,将包放入UiPath的本地包目录,下载并安装
自定义控件
。
.NET Framework
17,748
社区成员
24,324
社区内容
发帖
与我相关
我的任务
.NET Framework
.NET技术 .NET Framework
复制链接
扫一扫
分享
社区描述
.NET技术 .NET Framework
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章