今天的目的:编写Flash控件的三个属性,宽度, 高度,Url地址
1.昨天中我们提到了VS2005给我们的默认代码,我们现在来修改下.首先去掉下面的这个text属性段
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
2.我们开始写三个属性,这里我直接贴入代码:
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
#region 控件的三个必须字段
/// <summary>
/// 编写flash控件需要的属性:flashWidth,flashHeight,flashUrl
/// </summary>
private int flashWidth = 246;
private int flashHeight = 89;
private string flashUrl = "flash.swf";
#endregion
#region 控件的宽度字段
/// <summary>
/// 控件不需要绑定数据源,故Bindable特性设置为false
/// 编写宽度属性相应的set get方法,加入特性
/// set部分的if判断修改与2008年10月31日下午
/// set部分的判断参考《道不远人》p95
/// </summary>
[Category("Appearance")] //属性显示到Appearance类别的属性视图下面
[DefaultValue("246")] //默认值为100
[Description("flash文件的宽度")] //属性的描述文字
//对于.NET框架内建的基础数据类型,他们都有早已定义好的Convert,所以,去掉此特性也可以
//此部分注释掉,修改时间:2008年10月31日下午
//参考<<道不远人>>p103
//[TypeConverter(typeof(uint))] //这里特性是为了支持设置时智能标记的类型转换,如果没有这个会报错:UInt32对象无法转化为WebControls.Unit类型
public int FlashWidth
{
get
{
object obj2 =ViewState["flashWidth"];
if (obj2 != null)
{
return (int)obj2;
}
else
{
return this.flashWidth;
}
}
set
{
if ((value > 1024) || ((int)value < 0))
{
throw new Exception("按照常理来说:一个flash文件的宽度不会超过1024吧?\n如果您对本控件有意见,讨论QQ:422322998");
}
this.ViewState["flashWidth"]=value;
}
}
#endregion
#region 控件的高度字段
/// <summary>
/// 2008年10月31日下午加入set访问器的if判断
/// 本if判断参考《道不远人》p95
/// 编写高度性相应的set get方法,加入特性
/// </summary>
[Category("Appearance")] //属性显示到Appearance类别的属性视图下面
[DefaultValue(89)] //默认值为100
[Description("设置flash文件的高度")] //属性的描述文字
//[TypeConverter(typeof(Int32Converter))] //这里特性是为了支持设置时智能标记的类型转换,如果没有这个会报错:UInt32对象无法转化为WebControls.Unit类型
public int FlashHeight
{
get
{
object obj2=ViewState["flashHeight"];
if (obj2 != null)
{
return (int)obj2;
}
else
{
return this.flashHeight;
}
}
set
{
if ((value > 1024) || (value < 0))
{
throw new Exception("按照常理来说:一个flash文件的高度不会超过1024吧?\n如果您对本控件有意见,讨论QQ:422322998");
}
this.ViewState["flashHeight"] = value;
}
}
#endregion
#region 控件的Url字段
//编写Url性相应的set get方法,加入特性
//加入UI类型编辑器支持
/// <summary>
/// UrlProperty("*.swf")此特性10月31日中午加入
/// </summary>
[Category("Appearance")] //属性显示到Appearance类别的属性视图下面
[DefaultValue("flash.swf")] //默认值为100
[Description("flash文件的Url")] //属性的描述文字
[Editor(typeof(SwfUrlEditor), typeof(System.Drawing.Design.UITypeEditor))]
//[TypeConverter(typeof(StringConverter))] //这里特性是为了支持设置时智能标记的类型转换,如果没有这个会报错:UInt32对象无法转化为WebControls.Unit类型
public string FlashUrl
{
//利用return方法返回值
//字符串函数判断url地址前缀是否为~/,如果是,则去掉前缀,并返回。
//用StartsWith方法来确认字符串是否以~/开头
get
{
object o = ViewState["flashUrl"];
if (o != null)
{
string strUrl=(string)o;
if (strUrl.StartsWith("~/"))
{
strUrl = strUrl.Substring(2);
}
return strUrl;
}
else
{
return this.flashUrl;
}
}
set
{
this.ViewState["flashUrl"] = value;
}
}
#endregion