vs2008如何添加自定义控件

 我来答
休眠海盗
2014-04-13 · TA获得超过2.4万个赞
知道大有可为答主
回答量:2647
采纳率:0%
帮助的人:2368万
展开全部
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查阅。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式