请问:在模块中用代码生成控件后,如何在Form中调用
小弟在模块中写了一个用以下代码生成控件的过程
'下面的写在Form中
Dim WithEvents StartPerson1 As VB.TextBox
Private Sub Form_Load()
MakeStartPerson1
End Sub
'下面这句写在模块中
Public Sub MakeStartPerson1()
Set StartPerson1 = Form1.Controls.Add("VB.TextBox", "StartPerson1", Form1)
StartPerson1.Visible = True
End Sub
并在程序Form中调用此过程生成控件
可以生成控件 没有问题
但是我发现无法调用
即在Form中使用
Private Sub StartPerson1_Click()
StartPerson1.text = "王五"
End Sub
在控件上没有任何反映
而如果我把Form代码中的MakeStartPerson1删除 再把
Set StartPerson1 = Form1.Controls.Add("VB.TextBox", "StartPerson1", Form1)
StartPerson1.Visible = True
复制进Form的代码中后 再点击控件就有反应了
小弟是新手,不知道问题出在什么地方,望各位大侠帮帮忙
[解决办法]
放在模块中也没法调用啊 StartPerson1这个变量在form1中声明,在模块中是未定义的
[解决办法]
Form 中的 StartPerson1 是一个成员变量。
你的模块头肯定没有 Option Explicit,这样导致 MakeStartPerson1 中可以不经声明就创建一个句柄变量 StartPerson1,它与 Form 中的 StartPerson1 毫无关系,所以不会响应 Form 中的 StartPerson1_Click 事件。
[解决办法]
顶4楼,而且WithEvents只能在类模块中使用,即使你在标准模块中的MakeStartPerson1()中,通过参数传入Form1中声明的StartPerson1,生成的textbox应该也不会响应事件...
[解决办法]
创建控件的代码还是放在窗体中比较好,你可以将该控件通过参数传递给模块的函数进行其他的调用。