我的程序是这样写的:Dim ctlValue as Control
Dim ctlPrev as Control
Private Sub Form_Load()
Dim i As Integer
i = cboCondition(0).ListIndex
Set ctlValue = CreateNewCtl(strDataType(i))
End SubPrivate Function CreateNewCtl(strDataType As String) As Control
If Not ctlPrev Is Nothing Then
Controls.Remove ctlPrev
End If
Select Case LCase(strDataType)
Case "nvarchar", "int"
Set CreateNewCtl = frmQuery.Controls.Add("VB.TextBox", "txtVal", frmCondition)
End Select
Set ctlPrev = CreateNewCtl
With CreateNewCtl
.Left = cboCondition(1).Left + cboCondition(1).width + 190
.Top = cboCondition(1).Top
.width = cboCondition(2).Left - .Left - 190
.Height = cboCondition(1).Height
.Visible = True
End With
End Function每次当运行到 Controls.Remove ctlPrev, 系统会报错: Run-time error '365': Unable to unload within this context
不知道怎么解决?
另外要动态创建MonthView,它的ProgID应该怎么写?谢谢
Dim ctlPrev as Control
Private Sub Form_Load()
Dim i As Integer
i = cboCondition(0).ListIndex
Set ctlValue = CreateNewCtl(strDataType(i))
End SubPrivate Function CreateNewCtl(strDataType As String) As Control
If Not ctlPrev Is Nothing Then
Controls.Remove ctlPrev
End If
Select Case LCase(strDataType)
Case "nvarchar", "int"
Set CreateNewCtl = frmQuery.Controls.Add("VB.TextBox", "txtVal", frmCondition)
End Select
Set ctlPrev = CreateNewCtl
With CreateNewCtl
.Left = cboCondition(1).Left + cboCondition(1).width + 190
.Top = cboCondition(1).Top
.width = cboCondition(2).Left - .Left - 190
.Height = cboCondition(1).Height
.Visible = True
End With
End Function每次当运行到 Controls.Remove ctlPrev, 系统会报错: Run-time error '365': Unable to unload within this context
不知道怎么解决?
另外要动态创建MonthView,它的ProgID应该怎么写?谢谢
//另外要动态创建MonthView,它的ProgID应该怎么写?谢谢
Dim mytest As Control
Private Sub Command1_Click()
Licenses.Add "MSComCtl2.MonthView.2", "{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}"
'加入上面一行,无需工程-部件 加载有关控件
Set mytest = Controls.Add("MSComCtl2.MonthView.2", "mytest", Me)
mytest.Left = 100
mytest.Top = 100
mytest.Visible = True
End Sub
具体的问题是这样:在窗体上有三个ComboBox,我定义为一个cboCondition(3)的控件数组,需要根据第一个ComboBox(cboCondition(0))的数据类型创建TextBox、DTPick、ComboBox等控件,第一次可以正确创建,当cboCondition(0)有Click事件时,我需要Remove前一次创建的控件(我用ctlPrev保存创建的控件),然后重新创建新的控件。问题是在Remove旧控件是报错,还请帮忙看看,如果这种方法不对,该如何Remove前一次创建的控件呢?
问题出在 cboCondition(0)的Click事件中不允许卸载控件,用commandbutton的Click事件就没问题。为什么会这样,我也不知道。哪位高人能指点一二?
触发combobox的事件来remove Combobox控件本身不行吧,就好像不能开着手电把电池拿出来一样
这样总可以吧?