No descartaría la complejidad de OpenFileDialog. No es tan fácil construir uno que realmente funcione. Cuando construyes el tuyo propio, no es el diálogo "normal" y, como resultado, confunde a los usuarios. Esto es cierto incluso si lo haces bien, lo cual es difícil. Así que te sugiero que te limites a extender lo que ya está allí, en lugar de escribir algo nuevo.
Compruebe this article for an extension of OFD que podría/podría modificarse para hacer exactamente lo que desea. Hay una devolución de llamada que escribe en C# que responde a la selección de ruta.
Relacionados: FolderBrowserDialogEx es una extensión similar en FolderBrowserDialog. A pesar del nombre, puede configurarlo para buscar archivos, así como carpetas. Hay una devolución de llamada que se invoca cuando se selecciona algo (una carpeta, un archivo), y dentro de esa devolución de llamada puede hacer lo que necesita hacer. Por ejemplo, eche un vistazo dentro de los archivos dentro de una carpeta y llene la lista de archivos para mostrar solo con esos archivos.
Otra opción que puede considerar es dialog library from Ookii. Esta es una implementación de código abierto de OpenFileDialog, e incluye envolturas COM para todo el nuevo diálogo en Vista. Utilizando esa biblioteca puede abrir Vista OpenFileDialog y recibir eventos desde la interfaz IFileDialogEvents, en código C#. Uno de esos eventos es OnFolderChange(). Dentro del controlador, puede llamar a IFolder.GetFolder(), que le proporcionará un IShellItem, que le proporciona la carpeta en la que el usuario está cambiando. El siguiente paso sería detallar y potencialmente filtrar el conjunto de archivos, que es un ejercicio que dejaré al lector ...
¡muy interesante! Lo veré mañana. ¡Gracias! – djcouchycouch