简单的生活,简单的编程(Code Snippet Storage 2 进行中... ...)。
未经许可,请不要转载我的文章。
上一章遗留的DefaultValueAttribute问题,还没有找到问题所在,我会继续查找资料,找到后会及时补上。 今天我们讲Component Property Editor UI,在vs环境中Property Editor有两种,一种是vs自带的,一种是Component编写者根据自己需求而重新编写的。在本章中我们这两种都会进行一个简单的学习,vs自带的主要讲Collection Editor。 先来回顾下我们上章没有讲的几个PropertyAttribute: EditorAttribute:指定Property Editor使用的编辑器。 DesignerSerializationVisibilityAttribute:指定通过Property Editor得到的结果是否保存在代码中。 LocalizableAttribute:用户要本地化某个窗体时,任何具有该特性的属性都将自动永久驻留到资源文件中。 代码实例如下,请注意代码中注释说明。
posted on 2006-03-08 08:45 mapserver 阅读(5675) 评论(34) 编辑 收藏 所属分类: .NET组件编程
支持楼主,文章写的不错! 回复 引用 查看
嘻,楼上的兄弟,谢谢了。 你们的支持就是我最大的动力。 回复 引用 查看
我也支持你 回复 引用
有段时间我也用到了PropertyGrid这个控件,当时想研究一下PropertyDesigner,可时间太紧就放弃了:-) LZ既然研究了,我就可以拿来用了,呵呵~~~~ 回复 引用 查看
上一章遗留的DefaultValueAttribute问题,还没有找到问题所在,我会继续查找资料,找到后会及时补上。 这个问题我以前做控件的时候也找了很长时间,最后还是没有找到原因,希望楼主能找到... 回复 引用
DefaultValueAttribute这个我在开发中没有用过,为了文章的完整性,所以我对它进行介绍了,我查过了msdn,他上面的示例也是这样写的,但是就是取不到默认值。 现在我还在找别的资料,找到后会补上。 回复 引用 查看
从UITypeEditor类集成自定义属性类中的代码怎么调试? 这部分代码是在设计时运行的,不能象调试一般代码那样进行断点调试 回复 引用 查看
是的,Design Time的不好调试的,我都是用MessageBox来弹出消息。 回复 引用 查看
good 回复 引用
调试模式改为“程序”,然后目标程序选择“devenv.exe”(就是vs.net的exe文件),启动新实例后,就会新开一个IDE,在这里面,拖那个自己写的控件就好了。 回复 引用 查看
谢谢楼上的兄弟,其实我在用vs 6.0的时候就调试过进程了,但是现在忘记了,多谢提醒。 感谢,这样解决了我的大问题,下章准备讲讲你的调试方法。 再次感谢。 回复 引用 查看
From:http://www.dotnet247.com/247reference/msgs/51/258572.aspx The attribute is just a hint. It lets others understand about the default value for the property - for example, the property grid will use the DefaultValue attribute to let users reset it. If you want your property to have an initial value, you need to explicitly set it in the constructor. ----------------------------------------------------------- 在构造函数中加上_age=20;就可以了 不知道是不是你想要的?不是的话就当我胡说好了 回复 引用
非常佩服你,我目前也在写一个关于把office插件集成到.net IDE环境的组件,但木前没有思路。不知您能不能给我指点一下,谢谢! 回复 引用
对Students设值,窗体初始化没有Students值?????????? 回复 引用
To:problem 什么意思? 回复 引用 查看
在设计状态设置值后,窗体没有初始化,取值是空的 MessageBox.Show(this.demo31.Grade+"/"+this.demo31.Students.Count.ToString)); for(int i=0;i<this.demo31.Students.Count;i++) { MessageBox.Show(this.demo31.Students[i].Name); } 回复 引用
我用的2003,对StudentCollection的实现如下 public class StudentCollection : CollectionBase,IList { public Student this[int index] { get{ return (Student)(List[index]); } set{ List[index] = value; } } public int Add(Student value) { return List.Add(value); } public int IndexOf(Student value) { return List.IndexOf(value); } public bool Contains(Student value) { return List.Contains(value); } public void Remove(Student value) { List.Remove(value); } } 回复 引用
TO:problem // 这个例子用到了vs 2005里的List<>,如果vs 2003的朋友请自己去实做StudentCollection。 不好意思,我在注释里说明了,vs 2003的朋友自己实做StudentCollection。 回复 引用 查看
感谢啊。 ====================== 使用泛型作为属性 [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 绝对不能少啊。。。 ====================== 我有一个问题: 我觉得自定义控件使用泛型作为集合类真的很省力。 如果不用泛型,就必须实现一个从IList派生的collection类 这样比泛型麻烦多了。 我这样的看法对吗?请指教。 回复 引用 查看
搂住,这篇文章可以用在控件中吗? 回复 引用 查看
敬偑 回复 引用
@stonesoup 可以在控件中用 回复 引用 查看
楼主,正如problem所说,在2003中,设置Students的属性,但是并没有保存下来, 你在注释中加了, // vs 自带的Editor。 // 如果没有DesignerSerializationVisibilityAttribute的话,对Students设值,值不能被保存。 // 大家可以把DesignerSerializationVisibilityAttribute注释掉,对Students设值后,关闭vs环境,再重新打开项目,观察Students的值没有被保存下来。 但是我的确加了这个 [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public StudentCollection Students { get { return _students; } set { _students = value; } } 我确定StudentCollection 已经写好了。有其它的问题吗? 不知道怎么回事啊! 回复 引用 查看
您的文章给了我很大帮助,谢谢! 回复 引用 查看
谢谢,正好用上!!! 回复 引用
DefaultValueAttribute的作用是这样的,如果把组件放置在窗体上,例如你的组件有一个Text属性,如果没有DefaultValueAttribute这个标记,在窗体的自动生成的代码中会有这句-component1.Text = "";如果你加了属性标记DefaultValue("")也就是说只有当组件的Text不等于""才回产生这句代码,否则就不回产生代码,一般用坐优化代码,谢谢指教 回复 引用
我怎么设置了[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] ,重新打开项目,值可没有保存。 回复 引用
我是自定義的Form編輯器,可是只要在上面一點Button就關掉了,為什麼? 我要寫的是不只返回一個String,我返回的是一個Collection,怎麼辦啊? 回复 引用
怎樣才能把返回的Collection體現在HTML裡 回复 引用
请问用 UITypeEditor 用自定义编辑器能处理像 DataSet 之类的复杂属性么?我试了下,如果 UITypeEditor return DataSet 回来,好像只能在属性浏览器中看到我返回的数据集,而不能保存到构造函数中,下次再打开程序,dataset就没了。这个问题该怎么解决呢? 回复 引用
请问:frmGradeEditor dialog = new frmGradeEditor(); 这个地方是怎么来的? 回复 引用 查看
(⊙o⊙)…,刚下代码看了,LZ,抱歉 回复 引用 查看
本人亲测vs2008 下[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 写不写,都保存了值 回复 引用 查看
Powered by: 博客园 Copyright © mapserver