分配表单对象时出现错误“功能或接口标记为受限,或者功能使用了不受支持的自动化类型”

时间:2018-10-19 14:40:55

标签: forms vb6

我有两种形式:Form1和Form2

Form1创建一个新的Form2实例:

Dim NewFrm as new Form2
Newfrm.show

我需要将NewFrm(Form2)中的一个子项更新或调用到调用窗体Form1。

我尝试这样在Form2中创建一个Property Let:

Dim CalledFromFormInstanceFrm as Form1

Public Property Let CalledFromFormInstance(oValue As Form1)
    CalledFromFormInstanceFrm = oValue
End Property

所以,在Form1中,我现在正在做

Dim NewFrm as New Form2
NewFrm.CalledFromFormInstanceFrm=Me
NewFrm.Show

当它进入“让我们进入表单的公共属性”时,它可以工作-但CalledFromFormInstanceFrm失败并出现错误:

  

标记为受限的功能或接口,或者该功能使用Visual Basic不支持的自动化类型。”

谷歌搜索,该错误似乎表明人们在VB6中使用其他第三方ActiveX而非Forms。

我也尝试过将“ Property Let”更改为

Public Property Let CalledFromFormInstance(oValue As Form)

,然后将声明更改为

Dim CalledFromFormInstanceFrm as Form

以防万一它不喜欢有关Form的细节,而只是接受Form对象。

我陷入了困境-尽管第一个Property Let允许我使用它,所以我认为VB6中可能允许使用它,但我不确定我应该使用的语法-.net中的等效项工作正常但是.net与VB6相比,距离VB6还有一百万英里。

有什么主意吗?

1 个答案:

答案 0 :(得分:4)

Set是处理对象引用时需要的东西,因此应为:

Dim CalledFromFormInstanceFrm As Form1

Public Property Set CalledFromFormInstance(oValue As Form1) '//set
    Set CalledFromFormInstanceFrm = oValue '//set
End Property 

称为:

Dim NewFrm As New Form2
Set NewFrm.CalledFromFormInstance = Me '// set
NewFrm.Show

还请注意,您尝试使用私有变量:NewFrm.CalledFromFormInstanceFrm = Me而不是公共属性NewFrm.CalledFromFormInstance