1. 程式人生 > >關於在VB中動態載入控制元件的方法

關於在VB中動態載入控制元件的方法

動態載入控制元件,有諸多好處,
以前以為,只有在VC中才能動態載入控制元件,而在VB中,只能定義一個數組,然後採用Load方式載入。近日編碼,才發現,原來VB中也可以方便的動態載入。

舉例子總結一下,免得以後到處查:

1:動態載入VB固有的控制元件。
如:載入一個文字框
    Controls.Add "VB.TextBox", "txtDynamic", Me
    With Me!txtDynamic
        .Visible = True
        .Width = 2000
        .Text = "0"
    End With

2:如何繫結事件呢?
Private WithEvents txtTest As TextBox
Set txtTest = Me!txtDynamic
Private Sub txtTest_KeyPress(KeyAscii As Integer)
    
End Sub

3:動態載入自定義控制元件。注意,一定需要License。
   Licenses.Add "Project2.UserControl1", "kaghfadhghlaahnhigaaohaaogjgmaehoanb"
   Set ctlExtender = Controls.Add("Project2.UserControl1", "MyControl")
   With ctlExtender
      .Visible = True
      .Top = 1000
      .Left = 1000
   End With


4:那麼,自定義控制元件如何生成License?
1:工程屬性頁>>General  Require license key 勾上。
2: 開啟生成的VBL檔案,第二行中有Key。一看便知。


5:如何繫結自定義控制元件的事件呢?
Private WithEvents ctlExtender As VBControlExtender
Private Sub ctlExtender_ObjectEvent(Info As EventInfo)
    Debug.Print Info.Name
End Sub
嗯,引數怎麼取?
如:自定義控制元件的事件為:
Public Event EditChange(ByVal Param1 As String)
取引數就是:
Info.EventParameters("Param1")

6:對了,有License的自定義控制元件不動態載入,直接使用,需要License嗎,如何註冊?
需要。 把VBL檔案當作reg檔案註冊一下就好了。