Système.De Windows.Les formulaires.SaveFileDialog de ne pas appliquer l'extension par défaut

Je suis en train de faire SaveFileDialog et FileOpenDialog appliquer une extension du nom de fichier saisi par l'utilisateur. J'ai essayé à l'aide de l'exemple proposé dans question 389070 mais il ne fonctionne pas comme prévu:

var dialog = new SaveFileDialog())

dialog.AddExtension = true;
dialog.DefaultExt = "foo";
dialog.Filter = "Foo Document (*.foo)|*.foo";

if (dialog.ShowDialog() == DialogResult.OK)
{
    ...
}

Si l'utilisateur tape le texte test dans un dossier où un fichier test.xml arrive à exister, la boîte de dialogue suggérer le nom test.xml (alors que je n'ai vraiment envie de voir *.foo dans la liste). Pire: si l'utilisateur sélectionne test.xml, alors je vais en effet obtenir test.xml que le nom de fichier de sortie.

Comment puis-je m'assurer que SaveFileDialog vraiment seule permet à l'utilisateur de sélectionner un *.foo fichier? Ou au moins, qu'il remplace/ajoute l'extension lorsque l'utilisateur clique sur Save?

Les solutions proposées (mettre en œuvre les FileOk gestionnaire d'événement) seulement une partie de la tâche, que je tiens vraiment à désactiver le Save bouton si le nom de fichier a la mauvaise extension.

Afin de rester dans la boîte de dialogue et mettre à jour le nom du fichier affiché dans la zone de texte dans le FileOk gestionnaire, afin de refléter le nouveau nom de fichier avec l'extension de droite, voir la suite à une question relative à la.

Je ne suis pas sûr, mais vous pouvez essayer le réglage de multipleDottedExtensions de Vrai, peut-être que ce n'changement de comportement.
Non, cela ne change rien du tout, mais merci pour l'astuce.

OriginalL'auteur Pierre Arnaud | 2009-10-21