2011-08-08 18 views
1

我正在创建一个复合用户控件,并试图将控件作为属性公开,以便我可以将它们从我将用户控件拖放到的表单中进行数据绑定。我试图公开的一个控件是组合框,我似乎无法弄清楚如何将这个组合框公开给设计者。我正在尝试下面的代码,我已经从我可以找到的一些文档拼凑在一起,但迄今没有喜悦。如何在数据绑定的用户控件上公开组合框?

<Category("Data"), Bindable(True), _ 
Browsable(True), EditorBrowsable(EditorBrowsableState.Always), _ 
DesignerSerializationVisibility(DesignerSerializationVisibility.Visible), _ 
AttributeProvider(GetType(IListSource))> _ 
Public Property RollbackCombo As ComboBox 
    Get 
     Return cboRollBack 
    End Get 
    Set(value As ComboBox) 
     cboRollBack = value 
    End Set 
End Property 

任何人都可以看到我做错了什么?

为了详细阐述一下,我使用了像这样的属性声明来绑定复合控件上的文本框,并且我试图为组合框,它的数据源至少实现类似它的功能。

<Category("Appearance"), 
Bindable(True), 
Browsable(True), 
EditorBrowsable(EditorBrowsableState.Always), 
DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _ 
Public Property Title As String 
    Get 
     Return TitleTextbox.Text 
    End Get 

    Set(value As String) 
     TitleTextbox.Text = value 
    End Set 
End Property 

回答

3

我只是猜测在这里,但属性编辑器可能不知道如何处理类型为ComboBox的属性。

您是否尝试过暴露ComboBox的DataSource属性?

<Category("Data"), Bindable(True), _ 
Browsable(True), EditorBrowsable(EditorBrowsableState.Always), _ 
DesignerSerializationVisibility(DesignerSerializationVisibility.Visible), _ 
AttributeProvider(GetType(IListSource))> _ 
Public Property RollbackComboDataSource As Object 
    Get 
     Return cboRollBack.DataSource 
    End Get 
    Set(value As Object) 
     cboRollBack.DataSource = value 
    End Set 
End Property 
+0

感谢科里,我会给你一个镜头 - 我认为这是正确的路线。 – Mordy

+0

明白了:)好的科里 - 你是个传奇人物!我不得不设置displayname和valuename字段来从数据源中选择正确的列,但这在用户控件本身中是微不足道的。 – Mordy

+0

甜!现在很高兴它的工作:) –

相关问题