Vb6 属性页';s(.pag)应用按钮表现出奇怪的行为。缺陷你知道有什么工作吗?

Vb6 属性页';s(.pag)应用按钮表现出奇怪的行为。缺陷你知道有什么工作吗?,vb6,Vb6,我面临着属性页的应用按钮的奇怪行为。我不确定这是否总是一个问题;无论如何,我以前没有注意到。由于这是一个相当复杂的控件,我花了几个小时来追踪这个问题,直到出现意外行为的确切语句。为了简单起见,这里我只集中讨论需要的、可能可以复制的代码片段 我正在为用户控件设计属性页。出于演示的原因,让我们保持用户控件的简单性:它被命名为UAreas,没有组成控件,并且只提供一个名为Areas的属性 Private glAreas As Long Public Property Let Areas(NumAre

我面临着属性页的应用按钮的奇怪行为。我不确定这是否总是一个问题;无论如何,我以前没有注意到。由于这是一个相当复杂的控件,我花了几个小时来追踪这个问题,直到出现意外行为的确切语句。为了简单起见,这里我只集中讨论需要的、可能可以复制的代码片段

我正在为用户控件设计属性页。出于演示的原因,让我们保持用户控件的简单性:它被命名为UAreas,没有组成控件,并且只提供一个名为Areas的属性

Private glAreas As Long

Public Property Let Areas(NumAreas As Long)
    glAreas = NumAreas      
    Debug.Print Now(); glAreas, "Areas"      
End Property

Public Property Get Areas() As Long
    Areas = glAreas
End Property
现在我添加了一个名为PAreas的属性页。我将一个名为cTxtAreas的文本框控件放在它上面,并用这些事件处理程序填充属性页。(我知道这不是rubust代码,但正如我所说的,让我们保持简单。)

在用户控件的属性窗口中,单击Areas属性的3个点将按预期打开属性页。尤其是“应用”按钮的行为是否符合预期:更改文本框中的值并单击“应用”确实会按其应做的那样修改页面,并且页面可用于下一次更改。到目前为止没有问题

但是,为了使UAreas成为具有持久属性的性能良好的控件,我修改了Property Let Areas例程,如下所示:

Public Property Let Areas(NumAreas As Long)
    glAreas = NumAreas      
    PropertyChanged "Areas"
    Debug.Print Now(); glAreas, "Areas"      
End Property
旨在包括UserControl_WriteProperties和UserControl_ReadProperties(以及UserControl_InitProperties)的事件处理程序

但是,随着PropertyChanged语句的添加,属性页的行为会突然发生变化。修改文本框并单击“应用”仍会应用更改,但随后属性页上的所有内容都将消失,并显示一个空属性页,显示文本“没有具有属性页的选定对象”

我不确定除了我之外,这是否可以复制给任何人


然而,如果是,这是一个已知的错误吗?如果是这样,除了不使用PropertyChanged语句之外,还有其他解决方法吗?

此处没有
3个区域属性点。我有
(定制)
,带有3点按钮,这是预期的。您的示例代码在这里工作,没有问题。这里没有区域属性的
3点。我有
(定制)
,带有3点按钮,这是预期的。您的示例代码在这里工作,没有问题。
Public Property Let Areas(NumAreas As Long)
    glAreas = NumAreas      
    PropertyChanged "Areas"
    Debug.Print Now(); glAreas, "Areas"      
End Property