VB.NET用户控件属性未保存在设计器

时间:2016-06-16 19:05:43

标签: .net vb.net winforms user-controls

我已经在VB.NET应用程序上工作了大约两年,现在它的功能与Windows资源管理器外壳和文件浏览器的替换相同。我刚刚开始开发一个用户控件,它将像一个按钮,但由一个图片框和一个标签组成。单击该项目时发生的代码已经完成,但我对控件的属性有问题; 我为控件添加了两个属性,一个用于更改标签文本的“ButtonText”,另一个用于图片框中的“图像”。我阅读了有关控件属性Creating a Windows Form User Control)的Microsoft文档,并帮助我向控件添加属性。

Private bttnTxt As String
Private bttnImg As Image

<Category("Appearance"), Description("The text displayed at the bottom of the button control")>
Public Property ButtonText() As String
    Get
        Return bttnTxt
    End Get
    Set(ByVal Value As String)
        Label3.Text = Value
    End Set
End Property

<Category("Appearance"), Description("The image used in the button control")>
Public Property Image() As Image
    Get
        Return bttnImg
    End Get
    Set(ByVal Value As Image)
        PictureBox3.BackgroundImage = Value
    End Set
End Property

我是通过解决方案构建的,将新添加的控件添加到我的应用程序主窗体的设计器中,并设置“Image”和“ButtonText”属性的值。但是,当我向自定义属性添加值时,它们会立即恢复为空。 我需要帮助确定为什么我在设计器中设置的值不会留在属性中。 I've attached an image here to demonstrate my problem.

2 个答案:

答案 0 :(得分:0)

您没有在变量中保存任何内容:

 $('input[type="checkbox"]').click(function() {
                if ($('input[type="checkbox"]:checked').length > 0) {
                    $('#main-div > div > div > div').hide();
                    $('input[type="checkbox"]:checked').each(function () {
                        var showId = this.id;
                        $('div.' + showId).show();
                    });
                } else {
                    $('#main-div > div > div > div').show();

                }
            });

答案 1 :(得分:0)

我的问题是我需要重写克隆功能。参见下面的代码示例。

希望这可以为某人节省一些时间。

Public Class CustomClass_DatGridViewColumn 
    Inherits DataGridViewComboBoxColumn

    Private propertyValue As String = ""

    Public Overrides Function Clone() As Object
        Dim col As CustomClass_DatGridViewColumn = CType(MyBase.Clone(), CustomClass_DatGridViewColumn)
        col.myProperty = propertyValue
        Return col
    End Function

    <DesignerSerializationVisibility(DesignerSerializationVisibility.Visible), Category("Data"), .Description("description")>
    Public Property myProperty As String
        Get
            Return propertyValue 
        End Get
        Set(ByVal value As String)
            propertyValue = value
        End Set
    End Property
End Class