一般是用load 和Controls.Add方法添加vb自带的控件,如果自己创建了一个控件,如何动态添加?请各位不吝赐教!

解决方案 »

  1.   

    Option ExplicitDim WithEvents cmdMyCommand As VB.CommandButtonDim WithEvents ctlCommand As VB.CommandButtonDim WithEvents ctlCommandDel As VB.CommandButtonDim WithEvents ctlText As VB.TextBoxDim WithEvents ctlDynamic As VBControlExtender   '--動態的控件
    Private Sub ctlCommandDel_Click()
     
      On Error Resume Next
      
      Dim i As Integer
      
      '--將控件許可証消息刪除
       Licenses.Remove "MSComctlLib.TreeCtrl"
        
       If MsgBox("是否刪除所有的控件", vbYesNo) = vbYes Then
          
          For i = 1 To Form1.Controls.Count
             
             Controls.Remove 0
          
          Next i
       End If
       
    End SubPrivate Sub ctlCommand_Click()
      
      ctlText.Text = "你點的是控制項按鈕鍵"End Sub
    Private Sub ctlDynamic_ObjectEvent(Info As EventInfo)
      
      '--點擊樹型控件的一個條目,在cltText中間顯示該條目   If Info.Name = "Click" Then
       
          ctlText.Text = "您的是 & ctlDynamic.object.selecteditem.Text"
       
       End If
       
    End Sub
                            
    Private Sub Form_Load()  Dim i As Integer
      
      '--將樹型控件的許可証信息加入許可集合中
      
      '--如果許可已經存在的話,則返回錯誤信息732
      
      Licenses.Add "MSComctlLib.TreeCtrl"
      
      ' 在Form中動態的加入一個樹形控制項,如果你想樹形控制項建立到不同的  '容器中,象一個Frame控制項或者PictureBox控制項,你只要將Controls.Add
      
      '函數的第三個參數改為特定的容器名就可以了  Set ctlDynamic = Controls.Add("MSComctlLib.TreeCtrl", "myCtl", Form1)
      
      '--設置樹型控件的尺寸,位置
      
      ctlDynamic.Move 1, 1, 2500, 3500
      
      '--在樹型控件中加入10個節點
      
      For i = 1 To 10
       
        ' ctlDynamic.object.nodes.Add Relative:="Test" & Str(i), Text:="Test" & Str(i)    ' ctlDynamic.object.nodes.Add Relative:="Test" & Str(i), Relationship:=4, Text:="TestChild" & Str(i)  Next i
      
     '--使樹型控件可見
     
      ctlDynamic.Visible = True
      
     '--加入一個Text
     
     Set ctlText = Controls.Add("VB.TextBox", "myText", Form1)
     
     '--設置Text的尺寸和位置
     
     ctlText.Move (ctlDynamic.Left + ctlDynamic.Width + 50), 1, 2500, 100
     
     '--將Text背景設置為藍色,前景設置為白色
     
     ctlText.BackColor = vbBlue
     
     ctlText.ForeColor = vbWhite
     
     '--使Text可見
     
     ctlText.Visible = True
     
     '--加入一個CommandButton
     
     Set ctlCommand = Controls.Add("VB.CommandButton", "ctlCommand1", Form1)
     
     '--設置CommandBtton的位置和大小
     
      ctlCommand.Move (ctlDynamic.Left + ctlDynamic.Width + 50), ctlText.Height + 50, 1500, 500
     
     '--設置CommandBtton的標題
      
      ctlCommand.Caption = "點擊"
      
     '--使CommandButton可見
      
      ctlCommand.Visible = True
      
      '--建立一個刪除的按鈕
      
      Set ctlCommandDel = Controls.Add("VB.CommandButton", "ctlCommand2", Form1)
      
      '--設置Button的位置和大小
      
      ctlCommandDel.Move (ctlDynamic.Left + ctlDynamic.Width + 50), ctlText.Height + 650, 1500, 500
     
      ctlCommandDel.Caption = "刪除所有控件"
     
      ctlCommandDel.Visible = True
      
    End Sub
      

  2.   

    ctlDynamic 就是一個自定義的控件。加進pic中間 ,隻要把form1改變秤pic就可以了
      

  3.   

    不好意思,不太明白这个树型控件许可证信息"MSComctlLib.TreeCtrl"的由来。
    另外,在msdn上看到如下说明:
    有两种情况不需要在添加一个控件到 Controls 集合时添加许可证关键字: 
    1。当控件是一个固有控件,而且您没有复选“要求许可证关键字”选项。
    2。当您添加一个在工程中已经被引用的控件时。换句话说,如果该控件是显示在“工具框”中的。 
    我的控件是被引用的控件,是否就不需要添加许可证关键字?
    多谢指教!