在vb.net中在运行时更改属性属性

时间:2012-12-20 10:16:11

标签: vb.net

我发现了propertygrid,它可能很方便编辑或只是在我的程序中显示一些自定义设置数据。但我需要一些属性属性可以改变 喜欢'readonly'属性。

这是我到目前为止所做的:

Const myPersonCat As String = "MyPerson"
Const myDesc1 As String = "Firstname is one element"
<CategoryAttribute(myPersonCat), _
DescriptionAttribute(myDesc1), _
[ReadOnly](myBool)> _
Public Property firstname() As String
    Get
        Return _firstname
    End Get
    Set(ByVal value As String)
        If Not _firstname = value Then save_param("firstname", value, myPersonCat, myDesc1)
        _firstname = value
    End Set
End Property

Const mydesc2 As String = "but Lastname is second"
<CategoryAttribute(myPersonCat), _
DescriptionAttribute(mydesc2), _
[ReadOnly](myBool)> _
Public Property lastname() As String
    Get
        Return _lastname
    End Get
    Set(ByVal value As String)
        If Not _lastname = value Then save_param("lastname", value, myPersonCat, myDesc2)
        _lastname = value
    End Set
End Property

Save_param是对函数的调用,它将基本数据的属性保存在数据库中 所有这些工作都很好。

但现在是一个问题...... 这里有一些,不是太复杂的方法来设置'myBool'为readonly属性与变量而不是常量,我可以阻止更改一些属于程序中的情况的属性。
也许对于整个类别或单个属性?

或者也许存在其他一些获得类似功能的方法?

1 个答案:

答案 0 :(得分:0)

不,无法更改属性的值。作为替代方案,您可以在属性集中编写代码,以便在用户尝试将值设置为只读时设置该值时抛出异常。