请教如何向其他form传递自定义的类型的变量?

seeku 2003-05-15 05:29:20
我自定义了一个变量
Public Type MyType
f1 As Integer
f2 As Long
End Type

在一个form的公用过程中使用,希望用来传递,参数,并且用于返回设置
Private m_mt As MyType
Public Sub form4_proc(mt As MyType)
m_mt = mt
End Sub

编译的时候报错,大概意思就是我的type不是public的
错误原文:only public user defined types defined in public object modules
can be use as parameters or return types for public procedure of class modules or as fields of public user defined types
这么长嘎
...全文
17 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
BadCatw 2003-05-17
TO 楼主:我试了试,可以啊.没出现错误提示.
回复
painache 2003-05-17
用FRIEND关键字。

'Module1
Option Explicit

Public Type MyUDT
lng As Long
str As String
sng As Single
End Type

'Form1
Option Explicit

Private frmUDT As MyUDT

Friend Property Get frmUDTProperty() As MyUDT
frmUDTProperty = frmUDT
End Property

Private Sub Form_Load()
frmUDT.lng = 1000
frmUDT.sng = 0.001
frmUDT.str = "Hello Friend"
Load Form2
Form2.Show
End Sub

'Form2
Option Explicit

Private Sub Form_Load()
Debug.Print Form1.frmUDTProperty.lng
Debug.Print Form1.frmUDTProperty.sng
Debug.Print Form1.frmUDTProperty.str
End Sub

PS:MSDN里有这么一句话:“不过,Friend 成员有个特别有用的特点。因为它们不是某个 ActiveX 接口的一部分,它们不能用来在对象间传递用户定义类型。”我觉得这句话是不是错了呀,或者是我理解的不对?
回复
seeku 2003-05-16
Public Type MyType
f1 As Integer
f2 As Long
End Type

上面这个定义就是放在module里面的

to xayzmb(行者)
如何加属性?
加属性就算能加,对于代码维护可能会增加困难吧
回复
馮強 2003-05-16
楼上的也可行。建议增加一个Module,在里面定义成public变量。
回复
xayzmb 2003-05-16
给你的窗体写一个属性
用属性来传递...
回复
danielinbiti 2003-05-16
Public Type MyType
f1 As Integer
f2 As Long
End Type
公共的自定义申明只能在标准模块中。
不能在窗体中和类中申明
回复
seeku 2003-05-16
我已经把类型声明为public了,
怎么还说我不是public。

为了解决问题,我不的不用上指针,但这种方法总不是安全的办法啊

waiting . . . .
回复
seeku 2003-05-16
等待
回复
seeku 2003-05-15
这个也不行,自定义的类型不允许作为对象模块的public变量
回复
xayzmb 2003-05-15
以看了看
呵呵
可能不行.
回复
xayzmb 2003-05-15
这一句:
Private m_mt As MyType
改成
Public m_mt As MyType
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7492

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2003-05-15 05:29
社区公告
暂无公告