2011-11-06 3 views
1

여유 시간에 지정된 폴더의 파일을 검색 할 Windows Form 프로젝트를 만들고 있습니다. 지금까지 Windows 탐색기 에서처럼 폴더를 표시하는 TreeView가 있습니다.TreeView의 노드처럼 ListBox의 항목에 "태그"속성 추가하기?

또한 모든 검색 결과를 저장할 ListBox도 있습니다. 해당 목록에서 항목을 두 번 클릭하면 파일을 여는 옵션이 필요합니다. 리스트 박스는 전체 경로를 표시하는 데

  1. :

    지금까지 나는 3이 일을하는 방법을 참조하십시오.

  2. 전역 목록 또는 배열을 사용하여 전체 경로를 추적하는 반면 ListBox는 파일 이름 만 표시합니다. 그런 다음 색인을 사용하여 해당 항목을 찾습니다.
  3. TreeView의 노드처럼 ListBox의 각 항목에 "태그"속성을 추가합니다.

나에게는 세 번째 방법이 가장 매력적이지만 어디서부터 시작해야할지 모르겠습니다. 지금까지는 컨트롤 라이브러리 (Control Library)를 소홀히하고있었습니다.

나는 TreeView와 비슷한 방식으로 태그를 작동시킬 수 있기를 바랬다. 따라서 태그를 검색하고 태그를 설정하는 코드는 ListBox1.Items[i].Tag이거나 ListBox1.Tag[i] 일 수 있습니다.

도움을 주시면 감사하겠습니다.

답변

2

전체 경로를 반환하는 속성을 사용하여 사용자 지정 SearchResult 클래스를 만들어야합니다.
클래스는 ToString()을 무시하고 목록 상자에 표시 할 텍스트를 반환해야합니다.

그러면 클래스의 인스턴스를 목록 상자에 직접 넣고 목록 상자의 항목을 다시 클래스로 캐스팅하여 속성을 가져올 수 있습니다.

+0

매력처럼 작동했습니다. 감사! – Netfangled

1

목록의 항목을 나타내는 사용자 지정 클래스를 만들 것입니다. 표시 할 값을 나타내는 속성 (필드가 아님)이 있으며 선택한 값은 목록 상자의 .DisplayMember 및 .ValueMember 속성에 해당 속성 이름을 입력 할 수 있습니다. DisplayMember에 의해 반환되는 것은 항목의 텍스트로 표시되며, .ValueMember에 의해 반환되는 것은 .SelectedValue가 반환하는 것입니다. .SelectedItem에 직접 액세스하여 선택한 정확한 항목을 가져올 수 있습니다. 이 방법으로 원하는 항목을 항목으로 저장할 수 있습니다. .DisplayMember를 지정하지 않으면 목록 상자는 항목에 .ToString 함수를 사용합니다.

관련 문제