今天又加班了一小时,害得老婆骂,就是因为这该死的东西,不过现在终于弄清了,拿出来凉凉。
今天快下班时,我发现我发明的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“不是提供设计时的默认值”。仅仅起到重置属性,不生成代码的作用。
联系客服