2013-04-14 4 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의 aswell 좋아하지만

답변

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() 메서드를 시도하고 오류가 발생하지 않도록 IDE에서 Option Strict On을 설정하십시오.

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)