2010-11-05 10 views
6

Necessario creare un OpenFileDialog personalizzato .Net su Windows XP e Windows Vista/7. Aggiungi nuovi controlli ad esso, ecc. Esiste un modo per personalizzare OpenFileDialog standard in .Net (in particolare WPF)? Ho esaminato le soluzioni come OpenFileDialogEx, ma non è accettabile per me tutta questa roba di aggancio WINAPI. Forse si conosce un modo per estrarre i dialoghi nativi tramite Reflection o qualcosa del genere? Come viene implementato OpenFileDialog nativo in Windows Vista/7? È scritto in WPF? Grazie in anticipo.Personalizzazione di OpenFileDialog in .Net

Saluti, Pavel.

risposta

3

Ci si abitua perché è quello che serve. OpenFileDialog non è scritto in WPF, la finestra di dialogo esiste come codice non gestito all'interno di Windows. Il wrapper gestito utilizza GetOpenFileName() su versioni legacy, l'interfaccia COM IFileOpenDialog su quelle correnti. Per quest'ultimo, l'interfaccia IFileDialogCustomize è stata progettata per personalizzare la finestra di dialogo.

Queste interfacce sono facili da utilizzare solo da un programma C++, una classica piaga della programmazione della shell. Dover supportare anche le macchine XP è un considerevole mal di testa, realisticamente sei bloccato con la finestra di dialogo legacy tramite GetOpenFileName(). Qual è ciò che fa quel progetto di codice.

3

C'è un wrapper per OpenFileDialog nello Windows API Code Pack. Ti mette in giro molte delle difficoltà di P/Invocandolo tu stesso. Puoi usarlo da WPF, da Windows Form, qualunque cosa.

+0

Il link è morto. Esiste ancora da qualche parte? –

+1

Io non la penso così. Era per le cose di Windows 7 e, in misura minore, per le cose di Windows 8, e non era progettato per restare così a lungo. Si è spostato da un sito all'altro ma sembra che non si sia spostato una terza volta. Alcuni hanno reso disponibili delle copie - non sono ufficiali, quindi usali con cautela. http://stackoverflow.com/questions/24081665/windows-api-code-pack-where-is-it –

2

Si può dare un'occhiata a questo collegamento CodeProject.

È un modo interessante per creare praticamente qualsiasi finestra di dialogo di file che si possa desiderare. E l'autore include un link a una versione WPF così come l'articolo originale scritto con XP in mente.