一起谈.NET技术,asp.net控件开发基础(9)
2011-09-01 23:47
525 查看
写第五篇的时候,我一步步的加上元数据(特性),使得设计时效果更加好,如对复杂属性应用以下特性,使属性浏览器支持扩展/折叠效果,使你更加容易编辑子属性,但接着我又遇到了问题,所以必须去解决
1.认识默认属性浏览器支持
让我们再认识一下属性,大家知道每个属性都是有类型的,最熟悉就是string,int这些类型了,vs2005属性浏览器对这些属性类型进行了识别, 如下例子
(1)table控件的Height属性,当你设置属性为字符串时,则提示错误信息
<asp:TextBox ID="TextBox1" runat="server"
Height="11" BackColor="Blue"
ForeColor="#FF8000">测试</asp:TextBox>
用代码表示则是这样,在后台代码中定义的属性类型必须相对应,BackColor必须为Color类型,否则则会出错,当在页面呈现时,则以字符串形式呈现.
protected void Page_Load(object sender, EventArgs e)
通过上面,我们认识到属性类型需要转换,这里便要引出我们所要讲的话题,类型转换器,例如,当BackColor="Blue" 时,则会激活一个类型转换器实例将字符串值转换成声明的类型(即将"blue"转换成Color类型,然后赋给BackColor..net类库中的基本类型和许多类型都有与其相关联的类型转换器。
一般常用的类型有String,Int,Boolean,DateTime,Enum等类型,其类型已默认与其相对应的类型转换器关联起来,如Color类默认关联的类型转换器System.Drawing.ColorConverter;FontInto类默认关联的类型转换器System.Drawing.FontConverter类型转换器的基类为System.ComponentModel.TypeConverter,所有的类型转换器都从其派生.。下面我们再来看一个例子,
我们先定义一个复杂属性,用于测试
示例一
[TypeConverter(typeof(ExpandableObjectConverter))]
public class Address
[TypeConverter(typeof(AddressConverter))]
public class Address
public class GameConverter : StringConverter
[TypeConverter(typeof(GameConverter))]
[Description("喜欢的游戏")]
public String Game
{
get
{
return game;
}
set
{
game = value;
}
}
好了,.下面我们看一下效果,如下图,你可以选择下拉框的值,也可以自己手动输入,跟枚举类型很相似,但枚举类型无法自己修改值.
1.认识默认属性浏览器支持
让我们再认识一下属性,大家知道每个属性都是有类型的,最熟悉就是string,int这些类型了,vs2005属性浏览器对这些属性类型进行了识别, 如下例子
(1)table控件的Height属性,当你设置属性为字符串时,则提示错误信息
<asp:TextBox ID="TextBox1" runat="server"
Height="11" BackColor="Blue"
ForeColor="#FF8000">测试</asp:TextBox>
用代码表示则是这样,在后台代码中定义的属性类型必须相对应,BackColor必须为Color类型,否则则会出错,当在页面呈现时,则以字符串形式呈现.
protected void Page_Load(object sender, EventArgs e)
通过上面,我们认识到属性类型需要转换,这里便要引出我们所要讲的话题,类型转换器,例如,当BackColor="Blue" 时,则会激活一个类型转换器实例将字符串值转换成声明的类型(即将"blue"转换成Color类型,然后赋给BackColor..net类库中的基本类型和许多类型都有与其相关联的类型转换器。
一般常用的类型有String,Int,Boolean,DateTime,Enum等类型,其类型已默认与其相对应的类型转换器关联起来,如Color类默认关联的类型转换器System.Drawing.ColorConverter;FontInto类默认关联的类型转换器System.Drawing.FontConverter类型转换器的基类为System.ComponentModel.TypeConverter,所有的类型转换器都从其派生.。下面我们再来看一个例子,
我们先定义一个复杂属性,用于测试
示例一
[TypeConverter(typeof(ExpandableObjectConverter))]
public class Address
[TypeConverter(typeof(AddressConverter))]
public class Address
public class GameConverter : StringConverter
[TypeConverter(typeof(GameConverter))]
[Description("喜欢的游戏")]
public String Game
{
get
{
return game;
}
set
{
game = value;
}
}
好了,.下面我们看一下效果,如下图,你可以选择下拉框的值,也可以自己手动输入,跟枚举类型很相似,但枚举类型无法自己修改值.
相关文章推荐
- 一起谈.NET技术,asp.net控件开发基础(14)
- 一起谈.NET技术,asp.net控件开发基础(21)
- 一起谈.NET技术,asp.net控件开发基础(2)
- 一起谈.NET技术,asp.net控件开发基础(16)
- 一起谈.NET技术,asp.net控件开发基础(20)
- 一起谈.NET技术,asp.net控件开发基础(19)
- 一起谈.NET技术,asp.net控件开发基础(12)
- 一起谈.NET技术,asp.net控件开发基础(1)
- 一起谈.NET技术,asp.net控件开发基础(11)
- 一起谈.NET技术,asp.net控件开发基础(23)
- 一起谈.NET技术,asp.net控件开发基础(10)
- 一起谈.NET技术,asp.net控件开发基础(8)
- 一起谈.NET技术,asp.net控件开发基础(7)
- 一起谈.NET技术,asp.net控件开发基础(6)
- 一起谈.NET技术,asp.net控件开发基础(17)
- 一起谈.NET技术,asp.net控件开发基础(5)
- 一起谈.NET技术,asp.net控件开发基础(22)
- 一起谈.NET技术,asp.net控件开发基础(4)
- 一起谈.NET技术,asp.net控件开发基础(15)
- 一起谈.NET技术,asp.net控件开发基础(3)