ICANN认证国际域名顶级注册机构
网站建设,域名注册,空间租用,软件销售,广告设计 域名注册,空间租用, 网站建设,东莞网页设计,域名注册,网站推广,网站开发,网页设计 网站推广,,百度推广,新浪推广,雅虎推广,网易推广 标志设计,画册设计,包装设计,VI策划,企业形象顾问 连邦软件加盟店,提供销遥行,管家婆,速达,用友ERP,诺顿等软件报价及销售 建站必读 腾达网络,上网帮助中心, 腾达为东莞等地,提供网站建设,网站推广,广告设计,软件销售等优质服务!
建站必读


 
 
当前位置:首页 -> 建站必读 -> .NET技术
[原创]IssueVision 学习笔记(二)-----为控件添加自定义属性和事件
我们先来看看IssueVision中一个用户控件PaneCaption在可视化设计器中的属性窗口.













再看一下在另一个用户控件StaffPane中使用它时的属性窗口:













大家会发现它多出来很多个属性,这些属性是原来继承控件中没有的属性,如:InactiveTextColor,InactiveTextColor等等.它们是如何实现的呢?我们就来看一下这个用户控件的代码PaneCaption.cs吧.



namespace IssueVision

{

// Custom control that draws the caption for each pane. Contains an active

// state and draws the caption different for each state. Caption is drawn

// with a gradient fill and antialias font.

public class PaneCaption : UserControl

{

private class Consts

{

......



可以看到它是由 System.Windows.Forms.UserControl 继承而来,图一显示了它的默认属性.下面我们接着PaneCaption.cs代码,看看是如何将属性或事件显示在可视化设计器中.



[DefaultValueAttribute(typeof(Color), "3, 55, 145")]

[DescriptionAttribute("Low color of the inactive gradient.")]

[CategoryAttribute("Appearance")]

public Color InactiveGradientLowColor

{

get

{

return m_colorInactiveLow;

}



set

{

if (value == Color.Empty)

{

value = Color.FromArgb(3, 55, 145);

}

m_colorInactiveLow = value;

CreateGradientBrushes(); //自定义方法,用于创建线形渐变笔刷

Invalidate(); //Control.Invalidate 方法,使控件的特定区域无效并向控件发送绘制消息

}

}



[CategoryAttribute("Appearance")]

[DescriptionAttribute("High color of the inactive gradient.")]

[DefaultValueAttribute(typeof(Color), "90, 135, 215")]

public Color InactiveGradientHighColor

{

get

{

return m_colorInactiveHigh;

}



set

{

if (value == Color.Empty)

{

value = Color.FromArgb(90, 135, 215);

}

m_colorInactiveHigh = value;

CreateGradientBrushes();

Invalidate();

}

}



[DescriptionAttribute("Text displayed in the caption.")]

[DefaultValueAttribute("")]

[CategoryAttribute("Appearance")]

public string Caption

{

get

{

return m_text;

}



set

{

m_text = value;

Invalidate();

}

}



其结果如下图所示:

















我们可以看到Views,Staff list背景都是使用这个自定义的PaneCaption产生渐变效果(由InactiveGradientHighColor和InactiveGradientLowColor属性实现),文字Views和Staff list是由属性Caption实现.









--------------------------------------------------------------------------------



代码分析:



最重要的是 CategoryAttribute 类,它指定属性或事件将显示在可视化设计器中的哪个类别,具体类别如下表:



类别

说明



Action 关于可用操作的属性。

Appearance 影响实体外观的属性。

Behavior 影响实体行为的属性。

Data 关于数据的属性。

Format 影响格式的属性。

Layout 关于布局的属性。

Default 没有类别的属性属于默认类别。



























有关更多信息,请参阅.Net Framework 1.1 SDK

我们看到举例的这三个属性CategoryAttribute属性值都为CategoryAttribute("Appearance"),从图二可以看出,这些属性都显示在"外观"下.



DefaultValueAttribute 属性顾名思义,就是此自定义属性的默认值.

DescriptionAttribute 属性则为此自定义属性的描述.





关键部分已经设置完成,剩下的就是如何实现属性的效果了,我以代码说明:



protected override void OnPaint(PaintEventArgs e)

{

DrawCaption(e.Graphics);

base.OnPaint(e);

}



// draw the caption

private void DrawCaption(Graphics g)

{

// background

g.FillRectangle(this.BackBrush, this.DisplayRectangle);



if (m_antiAlias)

g.TextRenderingHint = System.Drawing.Text.Te
 
 
本站关键词:
|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|
域名注册 | 虚拟主机 | 网站建设 | 网站推广 | 广告设计 | 帮助中心 | 软件中心 | 关于腾达
东莞市腾达信息工程有限公司      本站网络实名: 东莞网站建设
地址:东莞市新城市中心区第一国际B座610   邮编:523007
电话:0769-22026071 22026072 传真:0769-22026076 24小时服务热线:13712032014
© 2002~2005 腾达网络   版权所有