我有两种形式: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还有一百万英里。
有什么主意吗?
答案 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
。