小弟在模块中写了一个用以下代码生成控件的过程
'下面的写在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的代码中后 再点击控件就有反应了小弟是新手,不知道问题出在什么地方,望各位大侠帮帮忙
'下面的写在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的代码中后 再点击控件就有反应了小弟是新手,不知道问题出在什么地方,望各位大侠帮帮忙
Set StartPerson1 = Form1.Controls.Add("VB.TextBox", "StartPerson1", Form1)
StartPerson1.Visible = True
End Sub上面没有必要放模块里,直接放窗体代码里
我的确是没有用Option Explicit 这次忘记了
那它与Form中的StartPerson1没有关系 是否能够在窗口代码中建立起与它的关系呢?
因为这个代码实在是太长了 我不想放在窗体代码中
'添加一个类模块,名称Class1,代码:
Option ExplicitDim WithEvents oText As VB.TextBoxPublic Function MakeStartPerson1(oTextName As String, Container As Object) As TextBox
Set oText = Container.Controls.Add("VB.TextBox", oTextName, Container)
oText.Visible = True
Set MakeStartPerson1 = oText
Set oText = Nothing
End Function'添加一个标准模块,代码:
Option ExplicitPublic myClass As New Class1
'窗体中代码:
Option Explicit'下面的写在Form中
Dim WithEvents StartPerson1 As VB.TextBoxPrivate Sub Form_Load()
Set StartPerson1 = myClass.MakeStartPerson1("StartPerson1", Me)
End SubPrivate Sub StartPerson1_Click()
StartPerson1.text = "王五"
End Sub'这样处理,要注意程序结束时,最好要释放一下公共类myClass