내용을 기반으로 OpenFileDialog에 표시된 파일을 필터링 하시겠습니까?

StackOverflow https://stackoverflow.com/questions/937061

  •  06-09-2019
  •  | 
  •  

문제

OpenFileDialog의 동작을 수정하여 폴더의 파일 내부를보고 컨텐츠를 기반으로 특정 폴더를 무시할 수있는 방법이 있습니까?

한 가지 예는 zip 파일로 가득 찬 폴더에 열리지 만 특정 파일이 포함 된 파일 만 표시하는 것입니다.

문서에서 HookProc이 있지만 어떻게 사용할 것인지 확실하지 않습니다.

가능하다면 비교적 느린 작동이 될 것임을 알고 있습니다. 현재 나는 성능에 대해 걱정하지 않습니다.

감사!

도움이 되었습니까?

해결책

나는 OpenFiledialog의 복잡성을 무시하지 않을 것입니다. 실제로 작동하는 것을 만들기는 쉽지 않습니다. 직접 구축 할 때는 "일반적인"대화 상자가 아니며 결과적으로 사용자를 혼란스럽게합니다. 이것은 당신이 잘하는 경우에도 마찬가지입니다. 어렵습니다. 그래서 나는 당신이 새로운 것을 쓰지 않고 이미 존재하는 것을 확장하는 것을 제안하는 것이 좋습니다.

확인하다 OFD 확장에 대한이 기사 그것은 당신이 원하는 것을 정확하게 수행하도록 조정 될 수 있습니다. 경로 선택에 응답하는 C#에 쓴 콜백이 있습니다.

관련된: FolderBrowserDialogex FolderBrowserDialog에서 유사한 확장입니다. 이름에도 불구하고 폴더뿐만 아니라 파일을 검색하도록 구성 할 수 있습니다. 무언가 (폴더, 파일)가 선택 될 때 콜백이 호출되고 해당 콜백 내에서 필요한 작업을 수행 할 수 있습니다. 예를 들어, 폴더 내 파일 내부를 살펴보고 해당 파일 만 표시 할 파일 목록을 채우십시오.


당신이 고려할 수있는 또 다른 옵션입니다 Ookii의 대화 라이브러리. 여기에는 OpenFiledialog의 오픈 소스 구현이며 Vista의 모든 새로운 대화 상자에 대한 COM 포장지가 포함되어 있습니다. 해당 라이브러리를 사용하여 Vista OpenFiledialog를 팝하고 이벤트를받을 수 있습니다. ifiledialogevents C# 코드의 인터페이스. 그러한 이벤트 중 하나는 OnfolderChange ()입니다. 핸들러 내에서 당신은 ifolder.getfolder ()에게 전화 할 수 있습니다. ishellitem, 사용자가 변경하는 폴더를 제공합니다. 다음 단계는 파일 세트를 항목 화하고 잠재적으로 필터링하는 것입니다.이 연습은 독자에게 남겨 둘 것입니다 ...

다른 팁

아니요,이를 위해 자신의 기능을 구현해야합니다. 그러나 솔직히 말해서, OpenFiledialog는 어쨌든 많은 일을하지 않습니다. 솔직히 말해서, 당신은 아마 그것에 연결될 수 있지만, 실제 작업이 파일의 내용을 검사하는 것이라면 아무것도 아무것도하지 않을 것입니다. 그런 다음 자신만의 간단한 OpenFiledialog 클래스를 위에 쓸 수 있습니다. 저것.

이 질문이 ZIP 파일의 목록 내용과 관련하여 도움이 될 수 있습니다.

c#에 .zip 폴더의 내용을 나열하는 방법은 무엇입니까?

(참고, 성능을 향상시키기 위해 잠재적으로 삭제할 수 있습니다. 많은 스레드에 걸쳐 있지 않습니다)

Windows API 코드 팩을 사용할 수 있습니다 (소스와 함께 제공). 공통 파일 대화 상자는 Winforms/WPF의 버전보다 파일 대화 상자의 기능이 훨씬 더 많이 노출됩니다.

http://code.msdn.microsoft.com/windowsapicodepack

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top