动态清除流布局面板

时间:2013-04-14 17:47:10

标签: vb.net flowlayoutpanel

试图以不同的方式做到这一点,这是我最新的:

Dim i As Integer = 0
    Dim ControlCount As Integer = SearchResults.Controls.Count
    Do Until i > ControlCount
        SearchResults.Controls.RemoveByKey(i)
        i += 1
    Loop

搜索结果是流布局面板的名称!

如何做到这一点的任何想法?我只想删除当前面板中的所有内容!

我也尝试过像searchresults.items.clear这样的东西,但无济于事

2 个答案:

答案 0 :(得分:1)

你试过SearchResults.Controls.Clear()吗? FlowLayoutPanel具有Controls属性。查看该文档(http://msdn.microsoft.com/en-us/library/system.windows.forms.control.controls.aspx),您可以看到它是一个Control.ControlCollection,并查看文档,您可以找到.Clear()方法。

我怀疑你的控件没有0,1,2的键......(键应该是一个String,而不是一个Integer) - 也许你在考虑RemoveAt方法(http://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection.removeat.aspx)。但这不会以你显示的方式起作用,因为每次删除一个控件时,控件的数量都会减少一个。

所以,试试.Clear()方法,请设置Option Strict On,最好是在IDE中,让它为你指出错误。

答案 1 :(得分:0)

密钥是一个字符串,作为第一个响应。键是控件的Name属性。如果您还想删除flowlayoutpanel及其内容,可以像下面这样调用dispose方法:

    If IsNothing(flpTechProductionNumbers.Controls.Find(Action, True).FirstOrDefault) Then
    Else
        flpTechProductionNumbers.Controls.Find(Action, True).First.Dispose()
        ' flpTechProductionNumbers.Controls.Find(Action, True).First.Controls.Clear()
    End If

如果你想通过像你正在尝试的索引访问控件,你应该能够将Controls属性视为一个数组,并执行以下操作:

            flpTechProductionNumbers.Controls(i)