最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
编写与.NET属性窗口交互的RAD组件(四)
时间:2022-07-02 11:57:32 编辑:袖梨 来源:一聚教程网
七、 编写和显示订制的类型
属性窗口中的编辑有如下三种工作方式:一,有些场合可以作为字符串来编辑,然后由TypeConverter来实现类型的转换。二,可以显示一个下拉列表来选择值。三,一个省略按钮提供其他的UI界面来编辑值,比如FileDialog和FontPicker。我们已经讲过了字符串形式,接着我们就来看下拉列表。
.NET framework已经包含了好几种下拉列表的例子,如Color,AccessibleRole,Dock等属性。我们从下图可以看到下拉列表的具体实现。
图4. 下拉列表编辑器
实现下拉的工作同样是由TypeConverter来定义。如果看TypeConverter的说明,可以看到有三个虚函数来实现这个功能:GetStandardValuesSupported(),GetStandardValues()和GetStandardValuesExclusive()。重载这些方法,我们可以为属性提供预先定义好的值列表。实际上,是TypeConverter实现了下拉列表中的枚举值。属性窗口自己本身并没有代码来处理这种下拉列表的编辑,而仅仅是使用TypeConverter的方法。
举个例来说,我们有一个包含Relation属性的FamilyMember组件,允许用户选择与其他人之间的关系。如果要使设计时界面更友好的话,属性窗口应该使用下拉列表来提供一些常用值的选择:如mother,father,daughter和sister等。除了提供的常用值之外,组件使用者也可以输入其他的表示关系的字符串值。
public class FamilyMember : Component
{
private string relation = "Unknown";
[TypeConverter(typeof(RelationConverter)),Category("Details")]
public string Relation
{
get { return relation;}
set { this.relation = value;}
}
}
internal class RelationConverter : StringConverter
{
private static StandardValuesCollection defaultRelations =
属性窗口中的编辑有如下三种工作方式:一,有些场合可以作为字符串来编辑,然后由TypeConverter来实现类型的转换。二,可以显示一个下拉列表来选择值。三,一个省略按钮提供其他的UI界面来编辑值,比如FileDialog和FontPicker。我们已经讲过了字符串形式,接着我们就来看下拉列表。
.NET framework已经包含了好几种下拉列表的例子,如Color,AccessibleRole,Dock等属性。我们从下图可以看到下拉列表的具体实现。
图4. 下拉列表编辑器
实现下拉的工作同样是由TypeConverter来定义。如果看TypeConverter的说明,可以看到有三个虚函数来实现这个功能:GetStandardValuesSupported(),GetStandardValues()和GetStandardValuesExclusive()。重载这些方法,我们可以为属性提供预先定义好的值列表。实际上,是TypeConverter实现了下拉列表中的枚举值。属性窗口自己本身并没有代码来处理这种下拉列表的编辑,而仅仅是使用TypeConverter的方法。
举个例来说,我们有一个包含Relation属性的FamilyMember组件,允许用户选择与其他人之间的关系。如果要使设计时界面更友好的话,属性窗口应该使用下拉列表来提供一些常用值的选择:如mother,father,daughter和sister等。除了提供的常用值之外,组件使用者也可以输入其他的表示关系的字符串值。
public class FamilyMember : Component
{
private string relation = "Unknown";
[TypeConverter(typeof(RelationConverter)),Category("Details")]
public string Relation
{
get { return relation;}
set { this.relation = value;}
}
}
internal class RelationConverter : StringConverter
{
private static StandardValuesCollection defaultRelations =
相关文章
- 快手网页版登录-快手网页版扫码登录 02-12
- 樱花动漫免费看动漫高清在线 - 樱花动漫最新版APP官方正版下载入口 02-12
- 秘塔猫写作网页版直达-秘塔写作猫官网入口 02-12
- 抖音充值-官方入口直充-抖音任务奖励-活动福利专享 02-12
- 阿里云企业邮箱官网入口-最新防走失通道一键直达 02-12
- venera安卓版官方下载入口-venera安卓最新版免广告安装包下载 02-12