vb.net用户控件如何更新我的属性

问题描述 投票:0回答:2

我正在VS 2019中编写一个用户控件,但是,当我在属性窗口中设置属性checked = true时,在新项目Form_load中,checked的值未更新,调试窗口显示为false,但属性窗口中的值为true

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9kOWV5dC5qcGcifQ==” alt =“已在属性窗口中设置” >>>

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9adWV1bi5qcGcifQ==” alt =“检查为假”>“>

这是我的用户控制代码

Private CheckedValue As Boolean
Public Event CheckedChanged As PropertyChangedEventHandler
<Browsable(True),
EditorBrowsable(EditorBrowsableState.Always),
Category("Data"),
Description("checked"),
DefaultValue(True),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
    Public Property Checked() As Boolean
        Get
            Return CheckedValue
        End Get
        Set(ByVal value As Boolean)
            CheckedValue = value
            RaiseEvent CheckedChanged(Me, New PropertyChangedEventArgs("Checked"))
        End Set
    End Property

形式为:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Debug.Print(Chao_Switch1.Checked)
    'The Switch display **wrong**
End Sub

如果我在代码中设置属性,则该值将正确

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Chao_Switch1.Checked=True
    Debug.Print(Chao_Switch1.Checked)
    'The Switch display **right**
End Sub

我正在VS 2019中编写一个用户控件,但是当我在属性窗口中设置属性checked = true时,在新项目Form_load中,checked的值未更新,调试窗口显示false,...] >

我认为您可能会在“默认值”和“初始值”之间感到困惑。 DefaultValue属性实际上是在告诉您,如果在设计器中右键单击该属性,然后选择Reset

除非您明确设置,否则任何属性都将具有其类型的默认值。您的属性的类型为Boolean,因此除非另行设置,否则其初始值为False。除非您设置该属性,否则它将反映其后备字段的初始值。您没有初始化背景字段,因此它将为False。如果您希望属性最初为True,则需要初始化背景字段:

Private CheckedValue As Boolean = True
 

我知道为什么会发生

DesignerSerializationVisibility.Content设置为DesignerSerializationVisibility.Visible

错误代码:

<Browsable(True),
EditorBrowsable(EditorBrowsableState.Always),
Category("Appearance"),
Description("description"),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>

权限代码:

 <Browsable(True), Category("Data"), Description("description"), EditorBrowsable(EditorBrowsableState.Always), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)>
vb.net user-controls
2个回答
0
投票

我认为您可能会在“默认值”和“初始值”之间感到困惑。 DefaultValue属性实际上是在告诉您,如果在设计器中右键单击该属性,然后选择Reset


0
投票

我知道为什么会发生

DesignerSerializationVisibility.Content设置为DesignerSerializationVisibility.Visible

© www.soinside.com 2019 - 2024. All rights reserved.