Comment puis-je changer l'extension du nom de fichier dans un SaveFileDialog lorsque l'utilisateur modifie le filtre?

StackOverflow https://stackoverflow.com/questions/1097012

Question

Nous avons un SaveFileDialog dans notre application, qui offre une variété de formats, l'utilisateur peut exporter des médias. Nous déterminer le choix du format de l'utilisateur en utilisant la propriété FilterIndex du SaveFileDialog. Les différents formats ont des extensions de fichiers, donc nous voudrions que le nom du fichier que l'utilisateur est entré dans l'extension de changer lorsque l'utilisateur modifie le filtre sélectionné. Est-ce possible, et si oui, comment?

EDIT: Je veux que cela se produise alors que la boîte de dialogue apparaît, lorsque l'utilisateur modifie le filtre , l'utilisateur obtient des commentaires sur ce que le nom de fichier sera plutôt que par la suite lorsque l'utilisateur ferme la dialogue. Je l'ai essayé d'utiliser un filtre de message, mais il ne reçoit pas les messages de la boîte de dialogue. J'ai essayé Application.Idle mais jamais les feux alors que le dialogue est en cours d'exécution. J'ai essayé jusqu'à ce que l'utilisateur ferme la boîte de dialogue d'un fil d'arrière-plan, mais FilterIndex ne soit pas mis à jour.

Était-ce utile?

La solution

SaveFileDialog ne peut être héritée, je suppose que vous devez construire votre propre, en utilisant FileDialog comme la classe de base.

Autres conseils

SaveFileDialog change l'extension du fichier lorsque l'utilisateur modifie automatiquement le filtre. Si vous voulez traiter certaines certaines actions pour les différents formats de fichiers que vous pouvez youse quelque chose comme ceci:

...
if (saveDialog.ShowDialog() == DialogResult.OK)
{
    switch (saveDialog.FilterIndex)
    { 
        case 0:
            ...
            break;
        case 1:
            ...
            break;
        default:
            ...
            break;
    }
}
...

Ajoutez vos filtres:

saveFileDialog1.Filter = "txt files (*.txt)|*.txt|Word files (*.doc)|*.doc";

alors:

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
  switch (saveFileDialog1.FilterIndex)
  {
    case 1:
      saveFileDialog1.FileName = System.IO.Path.ChangeExtension(saveFileDialog1.FileName, "txt");
      break;
    case 2:
      saveFileDialog1.FileName = System.IO.Path.ChangeExtension(saveFileDialog1.FileName, "doc");
      break;
  }
  // Here you would save your file with the filename in saveFileDialog1.FileName.
  MessageBox.Show(saveFileDialog1.FileName);
}

Runt deux fois, sélectionnez d'abord "txt fichiers" puis "fichiers Word". Entrez « test » comme le nom du fichier.
Vous verrez que le nom de fichier est différent dans les deux cas. Text.txt et test.doc

Si vous entrez un nom avec une extension comme « test.htm », puis l'extension est modifiée lorsque vous changez de filtre.

Si vous entrez un nom de fichier comme « test.htm » et ne pas changer le filtre du boîtier de commutation prend en charge l'extension pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top