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

在vb.net中运行时更改属性,vb.net,Vb.net,我发现propertygrid,它可以方便地在我的程序中编辑或显示一些自定义设置数据。但我需要属性的某些属性可以更改。 比如“readonly”属性 这就是我到目前为止所做的: Const myPersonCat As String = "MyPerson" Const myDesc1 As String = "Firstname is one element" <CategoryAttribute(myPersonCat), _ DescriptionAttribute(myDesc1)

我发现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
Const myPersonCat As String=“MyPerson”
Const myDesc1 As String=“Firstname是一个元素”
_
公共属性firstname()作为字符串
得到
Return\u firstname
结束
设置(ByVal值作为字符串)
如果不是_firstname=value,则保存_参数(“firstname”,value,myPersonCat,myDesc1)
_firstname=value
端集
端属性
Const mydesc2 As String=“但Lastname是第二个”
_
公共属性lastname()作为字符串
得到
Return\u lastname
结束
设置(ByVal值作为字符串)
如果不是_lastname=value,则保存_参数(“lastname”,value,myPersonCat,myDesc2)
_lastname=value
端集
端属性
Save_param是对函数的调用,该函数使用数据库中的基本数据保存属性。
所有的工作都很好

但现在是个问题。。。 这里有一些不太复杂的方法,可以使用变量而不是常量为只读属性设置“myBool”,我可以用它来阻止更改程序中某些可靠的属性。
可能是整个类别还是单个属性


或者,这里可能存在获得类似功能的其他方法?

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

您可以给出一些简短的示例吗?嗨,Steve,这里没有关于如何避免编写只读属性的问题,而是关于在运行时将属性设置为只读的问题。据我所知,这是不可能的。检查这个