我有一个BindingSource的子类,只是为了满足我们的特殊需求而扩展它,我想支持VS2008 Designer。
我有三个属性,我希望得到设计师的支持,其中两个应该设置为表单上的其他Control
,一个应设置为Type
。
在den Designer中显示它们以及设置默认值null非常简单,但是我如何设法让VS选择可用的控件(理想情况下只需要所需类型)和/或Type
?< / p>
到目前为止,这是属性的代码,任何提示都是受欢迎的,因为我对VS-Designer支持一无所知。
public class BindingSourceEx
: BindingSource
{
[DisplayName("DataSourceType")]
[Description("Sets the type to bind to.")]
public Type DataSourceType
{
get;
set;
}
[DisplayName("BindingNavigator")]
[DefaultValue(null)]
[Description("Sets the BindingNavigatorQ1 to use.")]
public BindingNavigatorEx BindingNavigator
{
get;
set;
}
[DisplayName("DataGridView")]
[DefaultValue(null)]
[Description("Sets the DataGridViewQ1 to use.")]
public DataGridViewEx DataGridView
{
get;
set;
}
}
答案 0 :(得分:1)
设计器的默认实现已经处理了BindingNavigator和DataGridView属性。属性网格使用组合框来选择与控件类型匹配的控件。你必须在表单上删除一个BindingNavigatorQ1控件,以便在组合框中获得除None之外的任何内容。
Type属性更难,你需要至少一个TypeConverter来在Type值和一个字符串之间进行转换。不太确定这应该是一个可设计的属性,你想要绑定的类型肯定在设计时尚不存在,只有在编译所有程序集的运行时才会存在。