我认为您可能会在“默认值”和“初始值”之间感到困惑。 DefaultValue
属性实际上是在告诉您,如果在设计器中右键单击该属性,然后选择Reset
我正在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)>
我认为您可能会在“默认值”和“初始值”之间感到困惑。 DefaultValue
属性实际上是在告诉您,如果在设计器中右键单击该属性,然后选择Reset
我知道为什么会发生
将DesignerSerializationVisibility.Content
设置为DesignerSerializationVisibility.Visible