VB6中动态控件的事件处理

5
如何在VB6中实现动态控件的事件处理?有什么想法吗?
2个回答

4

最简单的方法是声明一个与控件相同类型的模块级变量,并使用 WithEvents 关键字。例如:

Option Explicit
' Declare object variable as CommandButton and handle the events.'
Private WithEvents cmdObject As CommandButton 

Private Sub Form_Load()
   'Add button control and keep a reference in the WithEvents variable'
   Set cmdObject = Form1.Controls.Add("VB.CommandButton", "cmdOne")
   cmdObject.Visible = True
   cmdObject.Caption = "Dynamic CommandButton"
End Sub

'Handle the events of the dynamically-added control'
Private Sub cmdObject_Click()
    Print "This is a dynamically added control"
End Sub

如果您想能够通过一个中央例程处理来自许多不同控件的事件,可能是不同类型的复杂变化更多。

顺便提一下,如果您想完全删除cmdObject(也就是“神奇”出现/消失的取消按钮),您可以先调用"Form1.Controls.Remove cmdObject",然后再调用"Set cmdObject = Nothing"。这样对象就会被清理掉,如果您需要的话,以后还可以重新实例化它。 - SLWW

2
那取决于控件是否固有的。 这篇文章解释了它。

不完全是这样。这取决于您是否已将控件的引用添加到项目中。而且,几乎所有情况下,最好添加引用。我写下了我的答案,假设已经添加了引用。 - MarkJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接