WinForm自定义控件怎么防止拖放到窗体上时,设计器自动给控件属性赋值?

问题描述

自定义了一些控件,首先有一个控件基类:publicabstractpartialclassBaseControl:UserControl{///<summary>///初始化控件基类。///</summary>publicBaseControl(){InitializeComponent();base.SetStyle(ControlStyles.UserPaint|ControlStyles.AllPaintingInWmPaint|ControlStyles.OptimizedDoubleBuffer,true);base.BackColor=Color.Transparent;}///<summary>///隐藏控件背景色属性为只读属性。///</summary>publicnewColorBackColor{get{returnbase.BackColor;}}privateSystem.ComponentModel.IContainercomponents=null;protectedoverridevoidDispose(booldisposing){if(disposing&&components!=null){components.Dispose();}base.Dispose(disposing);}privatevoidInitializeComponent(){components=newSystem.ComponentModel.Container();base.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;base.Name="BaseControl";}}然后继续继承控件:pulicclassMyControl:BaseControl{publicMyControl(){//...}}控件里面还有一些属性,比如某个元素的显示颜色等等。然后我在窗体上拖放控件的时候,设计器自动给我写的所有属性重新赋值了一遍,我都初始化好了,根本不用在设计器里面赋值啊,而且BackColor隐藏为只读的,设计器还是要给它赋值,每次都要报错,然后手动修改。在属性设计时可不可以用什么特性指明不让窗体设计器自动为其赋值啊?

解决方案

解决方案二:
对于一个Control来说都是BackColor属性的而且是读写属性所以设计器时vs也很自然会对BackColor属性赋值为控件默认背景色但是你的BackColor是new出来的而且是只读所以vs并没有访问到控件本身的BackColor而对你的属性赋值去了该报错还是得报错tabcontrol背景色也是无效的但是微软的做法并不是newBackColorpublicclassTablControl:...{[/*不在属性窗口显示,不出现代码提示*/Browsable(false),EditorBrowsable(EditorBrowsableState.Never)]protectedoverridColorBackColor{get{returnSystemColors.Control;}set{/*留空*/}}}

解决方案三:
额上面手打的代码修饰符写错了是public
解决方案四:
好多谢谢我试试。

时间: 2024-09-04 13:11:04

WinForm自定义控件怎么防止拖放到窗体上时,设计器自动给控件属性赋值?的相关文章

继承窗体后,在设计器无法设置控件属性的问题

问题描述 我在BaseForm中放入了一个DataGridView控件,并将它的Modifiers属性设置为public或者protected.ChildForm继承BaseForm,在设计器查看ChildForm中的DataGridView控件,所有属性和方法都是灰色的不能设置.如果在BaseForm中放一个Panel,在ChildForm中就能设置属性,请问是怎么回事?有什么办法使DataGridView也能在设计器设置属性和方法么? 解决方案 解决方案二:是不是因为DataGirdView

WinForm自定义控件如何防止窗体设计器自动为自定义属性赋值?

问题描述 WinForm自定义控件如何防止窗体设计器自动为自定义属性赋值? WinForm自定义控件如何防止窗体设计器自动为自定义属性赋值? 解决方案 在你的构造函数中赋初值.

窗体vb 6.0程序,状态栏控件可以放在窗体的其它位置上么?

问题描述 窗体vb 6.0程序,状态栏控件可以放在窗体的其它位置上么? 窗体vb 6.0程序,状态栏控件可以放在窗体的其它位置上么?能不能放在工具条的下面,而不是窗体的下面呢? 解决方案 可以,去掉align属性,就可以把statusbar任意移动了. 解决方案二: VB控制子窗体(外部程序)在Picture控件上 解决方案三: 不能,一般设计都是置于窗体最下方,这是大部分程序UI的设计习惯.

winform-WinForm窗体中,清空诸如TEXTBOX 等控件中用户输入的内容

问题描述 WinForm窗体中,清空诸如TEXTBOX 等控件中用户输入的内容 WinForm窗体中,清空诸如TEXTBOX 等控件中用户输入的内容.记得有使用Controls和foreach 之类的.... 在下初学者,悉心求教.望各长辈指点迷津 解决方案 foreach (TextBox tb in Controls.OfType<TextBox>()) { tb.Text = ""; } 解决方案二: 不同的控件没有通用的方法,不过你可以有另一个思路,就是把窗体重新加

C#中自定义控件旁边都有个小三角形——XXX任务。怎么自定义“控件任务?”我都纠结了快2年了

问题描述 C#中自定义控件旁边都有个小三角形--XXX任务.怎么自定义"控件任务?"我都纠结了快2年了.虽然在定义集合类属性的时候不影响使用,但对于处女座的我来说,这个问题不解决真的会要命----如图所示: 解决方案 解决方案二:你可以找一本比较好的控件开发的书看看,并且亲自查看这些控件的原代码.这些都在这些控件的class的定义上使用类似DesignerXXXXXAttribute标签声明着.解决方案三:您有类似的源代码吗?能给小弟发一个吗?我找了好多源代码,都没有实现这个功能的..

Winform开发框架之权限管理系统改进的经验总结(1)-TreeListLookupEdit控件的使用

最近一直在做一些技术性的研究和框架改进工作,博客也落下好几天没有更新了,也该是时候静下心来,总结这段时间的一些技术改进的经验了.和上一阶段的CRM系统开发和技术研究一样,我都喜欢在一个项目或者模块完成后,做一些相关的总结性工作,记录下前一阶段的技术脚印,希望给自己留下一个脚印快照,同时给读者了解自己的技术动向外,也有所收获.本随笔主要介绍在下拉列表中展示一个列表,以便实现数据结构的良好展示,并能快速选定所需的节点,这个就是TreeListLookupEdit控件的使用. 1.界面效果展示 首先我

asp.net 怎么实现多张图片一起上传 有没有什么第三方控件可供使用

问题描述 asp.net 怎么实现多张图片一起上传 有没有什么第三方控件可供使用 asp.net 怎么实现多张图片一起上传 有没有什么第三方控件可供使用 解决方案 http://blog.163.com/tianshenglongchang@126/blog/static/16462850320107724827852/ 解决方案二: swfupload,uploadify,不行你用html5的input file控件,设置multiple就可以同时选择多个文件进行上传 解决方案三: http:

WinForm控件开发总结(四) 控件属性的串行化

前一篇文章介绍了常用的设计时Attribute.其中BrowsableAttribute,CategoryAttribute, DescriptionAttribute,DefaultPropertyAttribute,DefaultEventAttribute都是比较简单的,也是可 有可无,但是为了提供更好的用户体验这些Attribute最好不要省掉,如果你对这些Attribute还不熟悉, 可以参考我前一篇文章的描述或者查看MSDN,这里我就不在赘述了. 下来我们主要介绍一下Designer

在C#窗体程序中,如何判断textbox控件中输入的格式是浮点型

问题描述 在C#窗体程序中,如何判断textbox控件中输入的格式是浮点型?求教,谢谢咯! 解决方案 解决方案二:简单点try{float.Parse();}catch{//不是}解决方案三:1L方法最简单,还可以用正则判断解决方案四:Regex.IsMatch(strValue,@"^d+.d+$")解决方案五:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSyst