2013-04-14 111 views
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但无济于事

回答

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的键......(键应该是一个字符串,不是一个整数) - 也许你正在考虑RemoveAt方法(http://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection.removeat.aspx)。但是,这不会以您所显示的方式工作,因为每次删除控件时,控件的数量都会减少一个。

因此,请尝试使用.Clear()方法,并且请设置Option Strict On(最好在IDE中)让它为您指出错误。

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 

如果你想通过像你想的索引来访问控制,你应该能够治疗控件属性作为数组并执行如下操作:

  flpTechProductionNumbers.Controls(i)