以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何动态判断增加控件  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=20867)

--  作者:exonjee
--  发布时间:2012/6/21 15:10:00
--  [求助]如何动态判断增加控件

求助,如何在窗口控件panel动态判定是否存在多个chart,然后删除,重新动态创建新chart

 

以下代码执行总报错

    Dim pn As WinForm.Panel
    Dim chrt As WinForm.Chart
    For Each ctl As winform.control In e.form.controls("pn1").Children
        If e.form.controls("pn1").ExistControl(ctl.name) Then
           e.form.controls("pn1").RemoveControl(ctl.name)
        End If
    Next

[此贴子已经被作者于2012-6-21 15:13:52编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/6/21 15:15:00
--  

很简单那,你创建的图表控件全部用char开头, 这样就可以遍历控件,凡是名称chart开头的,都是图表控件


--  作者:exonjee
--  发布时间:2012/6/21 15:20:00
--  

代码写了很多测试都报错,具体如何写循环判定删除

 


--  作者:狐狸爸爸
--  发布时间:2012/6/21 15:25:00
--  

Dim cnt as integer
For Each c As Winform.Control In e.Form.Controls
     if c.Name.Startswith("Chart") then
           cnt = cnt + 1
     end if
Next
if cnt > 0 then
     MessageBox.show(cnt & "个图表")
end if

注意名何区分大小写,chart不等于Chart


--  作者:exonjee
--  发布时间:2012/6/21 15:26:00
--  

解决了

    For Each c As Winform.Control In e.Form.Controls
        If c.name.contains("chart") Then
            e.Form.RemoveControl(c.name)
        End If
    Next