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.

22
demandé sur Frédéric Hamidi 2010-12-04 15:28:54

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...).

27
répondu digEmAll 2012-09-14 07:06:00

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é.

5
répondu Marc Gravell 2010-12-04 12:39:35

si elle est définie à true, la boîte de dialogue Fichier ouvrira toujours le chemin du fichier par défaut (propriété InitialDirectory).

0
répondu jbachman 2010-12-04 12:34:28

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.

0
répondu Oded 2010-12-04 12:39:32

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.

0
répondu linquize 2012-09-13 02:06:36