0

一直在尝试以几种不同的方式做到这一点,这是我最新的:

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 之类的东西,但无济于事

4

2 回答 2

2

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

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

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

于 2013-04-14T18:37:07.640 回答
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)
于 2015-01-16T19:56:38.417 回答