2016-10-14 10 views
-1

저는 영화 팬 아트와 제목을 저장하는 데 사용하는 Windows Forms 응용 프로그램에 FlowLayoutPanel을 가지고 있습니다. 이제는 내가 찾고있는 것이 FlowLayoutPanel에있는 기존 항목을 검색하는 방법입니다. 이건 내 GUI 경우 : Search movies... 상자에서C# FlowLayoutPanel의 검색 컨트롤

GUI Screenshot

, 나는 TextChanged 이벤트가 만 영화를 검색 입력과 관련된 영화 라벨을 을 보여주고 싶어요.

답변

0
foreach (Control c in myFlowLayoutPanel.Controls) 
{ 
    if (!c.Property.Text.ToLower().Contains(searchBox.Text.ToLower())) 
    { 
     myFlowLayoutPanel.Controls.Remove(c); 
    } 
} 

이것은 패널의 하위 항목을 반복합니다. 검색 조건에 대해 일부 속성을 확인하고 검색 조건이 포함되지 않은 경우 하위 항목을 제거 할 수 있습니다.

편집 : 귀하의 의견을 토대로 귀하의 라벨에만 일치하는 것으로 보이므로 사진이 사라집니다. 내가 접근하는 방식은 이미지와 레이블을 모두 포함하는 UserControl을 만드는 것입니다 (프로젝트를 마우스 오른쪽 단추로 클릭하고 Add - UserControl - 이름을 지정하십시오). 디자이너를 사용하여 PictureBox 및 Label (또는 이미 사용중인 컨트롤)을 추가합니다. UserControl을위한 뒤에 코드는 다음과 같이 보일 것이다 : 각 영화

public partial class Movie : UserControl 
{ 
    public string Title { get; set; } // for easy matching 

    public Movie() 
    { 
     InitializeComponent(); 
    } 

    public Movie(Image thumbnail, string title) // use this constructor to make your movie tiles 
    { 
     InitializeComponent(); 
     pictureBox1.Image = thumbnail; 
     label1.Text = title; 
     Title = title; 
    } 
} 

을, 당신은 썸네일 이미지와 제목에 전달하여 새 사용자 정의의 UserControl의 인스턴스를 생성 한 다음에 전체의 UserControl을 추가 할 수 있습니다 FlowLayoutPanel. 이제 유지하거나 제목 속성이 일치하는지 여부에 따라 전체 UserControl 제거 할 수 있습니다. foreach 루프가 다음으로 변경됩니다.

foreach (Control c in flp.Controls) 
{ 
    // Check if the control is one of your custom UserControls: 
    if (c.GetType() == typeof(Movie)) 
    { 
     // since it is a "Movie", it is safe to cast it: 
     Movie movie = (Movie)c; 
     if (!movie.Title.ToLower().Contains(searchBox.Text.ToLower())) 
     { 
      flp.Controls.Remove(c); // remove or keep both the image and text 
     } 
    } 
} 
+0

대단히 감사합니다. 텍스트 부분은 나를 위해 작동합니다. 이제 영화를 검색 할 때 이것을 볼 수 있습니다. [link] (http://imgur.com/download/zQqciyr). –

+0

하지만 영화를 검색 할 때 내 영화 미리보기 이미지가 표시되어야합니다. 나는 그것이 가능하지 않다고 생각한다 ... –

+0

@KeesvanV. 모든 것이 가능하다! 나는 올바른 방향으로 당신을 지적해야 할 몇 가지 추가 제안으로 나의 대답을 수정했다. –