Qu'est-ce que le FileDialog?RestoreDirectory Propriété?
j'ai lu à propos de la propriété sur MSDN, mais je ne comprends toujours pas ce qu'elle fait.
Obtient ou définit une valeur indiquant si la boîte de dialogue restaure répertoire courant avant fermeture.
qu'est-Ce exactement est-ce à dire? Que fait réellement la restauration du répertoire courant? Merci pour l'aide.
5 réponses
IIRC, dans windows XP quand vous appuyez sur Save
sur un SaveFileDialog
(ou Open
sur un OpenFileDialog
) le répertoire où est enregistré le fichier (ou ouvert), est définie comme le nouveau répertoire de travail courant (Environment.CurrentDirectory
).
en mettant FileDialog.RestoreDirectory = true
, quand vous fermez le FileDialog
le répertoire de travail initial est rétabli.
dans Windows Vista / Seven le comportement est toujours comme FileDialog.RestoreDirectory = true
(oui, même si vous affectez la valeur false...).
une bizarrerie de l'implémentation originale était qu'après que vous ayez fait votre sélection le répertoire courant de l'application changé dans ce dossier, ce qui signifie que si vous vous attendiez à ce que les opérations des fichiers soient relatives à votre dossier app, il a maintenant échoué.
cela signifie qu'il était pratique courante d'ajouter du code pour capturer le dossier courant avant d'utiliser he dialog, et le restaurer ensuite.
cela a été corrigé, donc il peut le faire pour vous, mais en changeant le par défaut le comportement a pu enfreindre le code qui s'appuyait sur la bizarrerie. Vous devez donc l'activer manuellement via cette propriété.
si elle est définie à true, la boîte de dialogue Fichier ouvrira toujours le chemin du fichier par défaut (propriété InitialDirectory).
lorsque vous pouvez sélectionner un répertoire en utilisant la boîte de dialogue, l'utilisation suivante de la boîte de dialogue s'ouvrira dans le dernier répertoire utilisé. Utiliser cette option restaurera le répertoire original.
ici, je parle de WinForms FileDialog seulement, WPF FileDialog peut avoir un comportement différent.
Pour Win XP, le répertoire courant est modifié lors de l'utilisation de dialog.
pour une application multi-threadée, cela doit être conscient. Il est facile de le prouver en lançant une boucle dans un nouveau thread pour vérifier si le répertoire courant est changé lors de l'utilisation de dialog, lors de la commutation vers un autre dossier.
Pour Win 7 / mono, le répertoire courant n'est pas modifié pendant ou après avoir utilisé le dialogue.
par conséquent, la propriété Win 7 / mono: RestoreDirectory n'est pas nécessaire.