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.
Non, cela ne change rien du tout, mais merci pour l'astuce.
OriginalL'auteur Pierre Arnaud | 2009-10-21
Vous devez vous connecter pour publier un commentaire.
Autant que je sache, il n'y a aucun moyen fiable de faire respecter une extension de fichier donné. C'est une bonne pratique de toute façon à vérifier la bonne extension, une fois la boîte de dialogue est fermée et informer l'utilisateur qu'il a choisi un fichier non valide si l'extension ne correspond pas.
OriginalL'auteur Darin Dimitrov
Vous pouvez gérer la
FileOk
de l'événement, et l'annuler si elle n'est pas la bonne extensionOriginalL'auteur Thomas Levesque
Le plus proche que j'ai obtenu à l'aide de la FileOk événement. Par exemple:
Caisse FileOK Événement sur MSDN.
OriginalL'auteur Ian
Je suis tombé sur cette même question, et j'ai été en mesure de contrôler ce qui a été montré en procédant comme suit:
avec la OpenFileDialog, le premier élément de la chaîne de filtre a été utilisé par défaut
avec le SaveFileDialog, le deuxième élément dans le filtre a été utilisé comme valeur par défaut:
Après avoir utilisé ces deux filtres avec le fileDialogs, Les résultats attendus, a finalement eu lieu. Par défaut, lorsque l'utilisateur sélectionne le bouton enregistrer et le savefiledialog, le type de fichier sélectionné est que du Programme X-files type défini dans le filtre pour le savefiledialog. De même, le type de fichier sélectionné pour l'openfiledialog, c'est que le Programme X de Type de Fichiers définie dans le filtre pour l'openfileDialog.
Il serait aussi bon de faire une entrée de validation comme mentionné plus haut dans ce fil. Je voulais juste faire remarquer que les filtres semblent être différents entre les deux boîtes de dialogue, même s'ils héritent de la filedialog classe.
SaveFileDialog
, rien n'empêche l'utilisateur de taperfoo
et avoir Windows suggérer le nom du fichierfoo.xml
si il arrive à être un fichier XML avec ce nom dans le dossier ouvert. Vous ne pouvez pas, actuellement, assurez-vous que le nom de fichier choisi respecte les sélectionnés*.pfx
extension (dans votre cas).Il y a toujours de la base de registre...
OriginalL'auteur John Bartels
OriginalL'auteur John Bartels