首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

请教:在模块中用代码生成控件后,怎么在Form中调用

2012-01-23 
请问:在模块中用代码生成控件后,如何在Form中调用小弟在模块中写了一个用以下代码生成控件的过程下面的写

请问:在模块中用代码生成控件后,如何在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应该也不会响应事件...
[解决办法]
创建控件的代码还是放在窗体中比较好,你可以将该控件通过参数传递给模块的函数进行其他的调用。

热点排行