永发信息网

vs2008如何添加自定义控件

答案:1  悬赏:40  手机版
解决时间 2021-11-27 08:00
vs2008如何添加自定义控件
最佳答案
vs2008的用户自定义控件

近日里,由于框架改造的需要,需要将跳转菜单(GotoMenu)功能从原有的以Config配置文件的方式,修改为在Design
Time环境下进行可视化配置的方式实现。于是做了一些准备,在Microsoft MSDN上翻阅了诸多资料,意外地,在 扩展设计时支持的外部资源 中找到了一些好东东,首先推荐一下。

言归正传,微软的工程师们当初在设计Visual
Studio的设计时编辑器时,考虑到开发人员需要在运行时以及设计时绘制,调试相关的控件、组件。将VS界面设计器设计为一个“可扩展”的属性编辑器。

界面编辑器的自定义,最常用的是使用属性(Attribute,为了与属性,Property,区分开,下文中使用“特性”)进行界面浏览设计。其中,最常用的,便是BrowsableAttribute。默认情况下,用户自定义组件中的属性都是默认可见了,即默认BrowsableAttribute为true的情况。当不希望某个属性在属性编辑器中显示时,我们可以做如下设置:

private Person person = new Person();
//[Browsable(false)]
public
Person Person
{
get { return this.person; }

}

此时,在属性编辑器中,我们可以看到,Person属性是可见的。



//[Browsable(false)]

注释去除,此时,Person属性,将不会在属性编辑器中展现出来:

回顾第一张图中显示的内容,我们可以发现,Person属性是不可编辑的,并且,在窗体Designer.cs窗体设计内容(本文中为Form1.Designer.cs)文件中,找不到关于Person属性的设置

这是为何呢?

在VS的属性编辑器的信息传递到.net程序(C#,VB)代码的时候,其相应的属性信息是需要进行序列化后,将属性内容持久化到本地代码中的。

Person属性是一个自定义类型的属性设置,因此,属性编辑器在序列化过程中,无法找到其相应的序列化设置,因此,在编辑设置该属性时,程序员需要指定序列化内容。添加如下代码:

private Person person = new Person();

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]

public Person Person
{
get { return this.person; }
}

回到窗体设计代码中(Designer.cs)

当然,在自定义控件的过程中,如果涉及到序列(List)的设置,也同样是需要指定序列化内容的。

除了以上描述的两个属性外,Visuao
Studio的扩展设计时支持内容中,还包括DevaultValueAttribute,CategoryAttribute等,具体的内容可到MSDN查阅。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
1991年男和1995年合适吗
beyongd the time 为什么叫bl the time
万和恒温热水器洗一会就不燃烧了怎么回事
如何在金蝶软件里设置一张A4张打印三张凭证
我爱家乡的鱿鱼作文
小猪才一个星期,站立不稳浑身冰凉
大众车带L的车成熟吗
土壤溶解性有机碳和土壤活性有机碳的区别
温州到思南汽车票多少钱
英语绘本爱唱歌的爸爸中文翻译
文新学堂(阳泉城区)地址在什么地方,我要处理
我昨晚把我单位的男同事带回家,和他发生了关
如何让自己在最紧张的时候冷静
目鱼怎么烧
12/6中的/是什么意思?
推荐资讯
还有3天我们就要上台跳舞了 我现在好紧张好紧
梦见蛇要咬我,我把蛇踩死了
G394哈尔滨几点发车
商标证上是黑体做商标用手写体和法吗?
2018代理bb霜那个靠谱
用碳化钛合金制造的高速线材导辊(导卫轮)有
北京 赛 车 pk 10技巧公式那个是最好的
金梁40塔吊小车绳长度
关于Java认证考试有几种认证
把红墨水分别滴到热水和冷水中,________水变
本人想开个酒吧、清吧。室内装修该从何入手。
大众03款1.6高尔夫的电脑插头在什么位置
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?