打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[.net自定义控件] 之DefaultValue(object)

今天又加班了一小时,害得老婆骂,就是因为这该死的东西,不过现在终于弄清了,拿出来凉凉。

今天快下班时,我发现我发明的NumTextBox不好使了,具体症状是:有时起作用,有时不起作用,有时在属性栏里看到的属性自己变了,我发誓,我决对没动他,

郁闷的要死,每天都是我要下班的时候,就来问题,解决吧。

本以为是因为我删除了这个文件AssemblyInfo.cs,因为这个文件里有一个[assembly: Guid("407713ee-649a-4969-913e-8340993a3a6c")],我想,不会是因为没有这个东西了,不定期的,程序就会变一下,从而导致程序认不出来了,所以就疯了?可能哦,于是,想加一个,不成,没加的地方,难道vs不上删除,所以也就不让加?可能哦,我现在可以非常相信微软,因为我有过很多想法,后来发现微软他老人家已经帮实现了,次数太多了,所以现在对他的东西,我是很相信,如果有问题,那肯定是自己还不够了解罢了。重新建一个吧,……%#¥#·!·!问题多多,不过半个多小时后,还是可以了,还有我想不人进因为我设置了一个默认值的原因吧,所以呢。。

进入主题:

难道是不能用Numeric?试了试,应该不是这个问题,因为批量替换后,问题依旧。

修改控件里面的:DefaultValue(NumTextBoxType.Numeric), 为 DefaultValue(NumTextBoxType.String) 或删除后,问题一直没出现。

看来真跟DefaultValue有关,不管他有关没关了,再不回家老婆可要生气了,先回家。

回家后,被批后。。。

我想了想,以前加了个友情链接,是专门研究winform控件的,正好打开看看,没想到他上面竟然有一个ComboBoxTree,我研究了两天才研究出来的东西,他上面竟然就有,而且可以拖动大小,不管他,我先不研究他,登录我的CodeProject.com上的账号,把他提供的那个地址加到收藏夹里。以后研究了,因为现在的已经很好用了,改天放上来。不过总感觉我改的那个,太没思路了。

偏了,我感觉我成功不了的原因,可能就是观注的东西太多了,走着走着就走远了。忘记刚才主要是做什么了。

给这哥们发了个邮件,说明可能是DefaultValue问题,发了邮件后,发现,其实我已经把问题提出来了呀,先到网上找找吧。终于,拨云见日:

.net 自定义控件里 DefaultValue到底有什么用呢?

老外的回答:

DefaultValue has nothing to do with setting the inital value of the property as defined in the documentation for DefaultValueAttribute:

You can create a DefaultValueAttribute with any value. A member's defaultvalue is typically its initial value. A visual designer can use the defaultvalue to reset the member's value. Code generators can use the default
values also to determine whether code should be generated for the member.

一位网友:

DefaultValue的作用:不是提供设计时的默认值,他的作用是 当你在IDE的属性栏里 输入或选择的值 与 你DefaultValue相同时,这个值不变黑【加粗显示】。

补充一下,就是当你在设计视图中在属性编辑器中,把属性值设置成默认值时,该值就不再加粗显示。明白?他只有这么一个作用,你设置的值跟他DefaultValue一样时,他不加粗显示,再没别的用处。

问题就是有时你在编辑器的属性里看到他已经默认了,所以就当是选中了,所以就不设置了,而你的控件里却没有设置默认值(不是设置DefaultValue),从而导致你总感觉莫名其妙的问题。

属性看起来没有变粗有两种情况:一是设置了DefaultValue,而你没有自己选择或输入值二是选择或输入了一个值与DefaultValue值一样,你看不出来。

当然DefaultValue不是可以任意设置的,他得设置成跟这个属性相同的类型,不然重置时就会出现类似提示:

---------------------------
Microsoft Visual Studio
---------------------------
类型“System.String”的对象无法转换为类型“YongFa365.Controls.NumTextBox.NumTextBox+NumTextBoxType”。
---------------------------
确定  
---------------------------
 

,DefaultValue“不是提供设计时的默认值”。仅仅起到重置属性,不生成代码的作用。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
[.net自定义控件]TextBox控件重写 之NumTextBox
在C#中创建自定义控件
InfoPath的自定义表单设计教程
winform控件开发总结
个性化用户配置概述、profile配置节详细介绍
<贴板> 如何检测HTML表单已经发生改变
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服