小编Chr*_*ris的帖子

具有设计器可浏览属性的VB.NET用户控件在运行时未保存值

我一直在做一个控件,并为(CustomClass)列表添加了一个属性。该自定义类包含一个字符串,一个图像以及另一个包含一个字符串和一个图像的自定义类的列表。我已通过添加可浏览属性将此属性添加到设计器中,并且所有属性似乎均可与此一起正常工作。

运行程序时出现我的问题。我可以在属性中设置所有值,然后可以返回它们并保存它们,但是,一旦我运行该程序,由于该属性设置为Nothing,这些值将被清除。

为了允许编辑和保存我的属性,我意识到我必须初始化列表,并且已经在属性的accessor方法中进行了初始化(如果属性的值为空)。

我已经在设计器中修改了值,并在使用该属性及其基础字段的所有项目以及该属性的方法本身上放置了一个断点。第一个断点命中是访问它,该值始终为空。

我不确定应该将值存储在哪里,因为我已经检查了设计器代码,该值通常将在其中存储诸如字符串之类的类型,并且我已经检查了资源以查看它们是否已保存在那里(就像图像一样)。 。运行代码后,设计器中的值也将被清除。

控件内的一些代码

    Private _Items As List(Of Models.Category) = New List(Of Models.Category)

<Browsable(True), _
EditorBrowsable(EditorBrowsableState.Always), _
Category("Data"), _
Description("The items with sub items that should be displayed"), _
    DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
Public Property Items As List(Of Models.Category)
    Get
        'Return _Items
        Return Me.ExpMenu1.Categories
    End Get
    Set(ByVal value As List(Of Models.Category))
        Me.ExpMenu1.Categories = value
        '_Items = value
    End Set
End Property
Run Code Online (Sandbox Code Playgroud)

ExpMenu1中有问题的代码

        ''' <summary>
    ''' Gets or sets the categories.
    ''' </summary>
    ''' <value>The categories.</value>
    Public Property Categories() As …
Run Code Online (Sandbox Code Playgroud)

.net vb.net user-controls visual-studio-designer visual-studio

4
推荐指数
1
解决办法
1万
查看次数