这个类的工程是要返回一个事件'class code public event MyEvent(strInfo as string)public sub InitClass form1.show end sub'class form code '里面有2个文本框,一个txtIP,一个txtPort private sub btnOK_click() '在这里我需要返回MyEvent,这个本身就在class实例中,但是我程序从外部调用这个DLL,如何实现?? end sub
'外部调用(假定窗体) private WithEvents C1 as Class1private sub Command1_Click() set c1 = new class1 c1.InitClass end ifprivate sub C1_MyEvent(byref strInfo as string) msgbox strinfo end if
楼上的,返回事件的方法我当然知道,关键是DLL工程里那个FORM的值无法通过事件返回出来
'class code public event MyEvent(strInfo as string) public sub SendEvent(strInfo as string) RaiseEvent MyEvent(strInfo) end subpublic sub InitClass set form1.c = me form1.show end sub 'form code public c as Class1private sub btnOK_click() C.SendEvent "abc" end sub
什么意思?
注意,我这个工程是DLL工程,不是普通的WINFORM工程
dim c as class1
set c= new class1
call c.AAA()
比如 CSDN用户 是一个类,昵称 是类的成员。
楼主和我都是类的实例,楼主.昵称 = chaoren,我.昵称 = VB老鸟。如果是实例无关的函数就应该放在 Module 中。
public event MyEvent(strInfo as string)public sub InitClass
form1.show
end sub'class form code
'里面有2个文本框,一个txtIP,一个txtPort
private sub btnOK_click()
'在这里我需要返回MyEvent,这个本身就在class实例中,但是我程序从外部调用这个DLL,如何实现??
end sub
private WithEvents C1 as Class1private sub Command1_Click()
set c1 = new class1
c1.InitClass
end ifprivate sub C1_MyEvent(byref strInfo as string)
msgbox strinfo
end if
public event MyEvent(strInfo as string) public sub SendEvent(strInfo as string)
RaiseEvent MyEvent(strInfo)
end subpublic sub InitClass
set form1.c = me
form1.show
end sub
'form code
public c as Class1private sub btnOK_click()
C.SendEvent "abc"
end sub
什么值?FORM确定后你可以把值弹回去啊。
你不是会RaiseEvent嘛。实在不行,就多几个属性,FORM确定后,
把FORM里需要返回的值全给这些属性不就完了。
为你的Class form添加一个过程
public sub mysub()
call btnOK_click
end sub修改class code
public sub InitClass
form1.show
form1.mysub
end sub
所以Class code最好改为
Public sub initClass()
dim frmTest as New form1
frmTest.show
frmTest.mysub
end sub