¿Cómo puedo cambiar la extensión del nombre de archivo en un SaveFileDialog cuando el usuario cambia el filtro?

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

Pregunta

Tenemos una SaveFileDialog en nuestra aplicación, que ofrece una variedad de formatos que el usuario puede exportar los medios de comunicación. Nos determinar la elección del usuario de formato utilizando la propiedad de la FilterIndex SaveFileDialog. Los diversos formatos tienen diferentes extensiones de archivo, por lo que les gustaría que el nombre de archivo que el usuario ha introducido para cambiar la extensión cuando el usuario cambia el filtro seleccionado. Es esto posible, y si es así, ¿cómo?

EDIT: Quiero que esto ocurra mientras se muestra el cuadro de diálogo, cuando el usuario cambia el filtro , por lo que el usuario obtiene información sobre lo que será el nombre del archivo, en lugar de después, cuando el usuario cierra la diálogo. He intentado usar un filtro de mensajes, pero no recibe mensajes para el diálogo. He intentado Application.Idle pero que nunca se dispara mientras que el diálogo está en marcha. He intentado un subproceso de fondo, pero FilterIndex no se actualiza hasta que el usuario cierra el diálogo.

¿Fue útil?

Solución

Como SaveFileDialog no se puede heredar, supongo que debe construir su propia, utilizando FileDialog como la clase base.

Otros consejos

SaveFileDialog cambia la extensión del archivo de forma automática cuando el usuario cambia el filtro. Si desea procesar algunas ciertas acciones para diferentes formatos de archivo que puede youse algo como esto:

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

Añadir sus filtros:

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

a continuación:

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 dos veces, primero seleccione "txt" y luego "archivos de la palabra". Introduzca "prueba" como nombre de archivo.
Se verá que el nombre del archivo es diferente en ambos casos:. Text.txt y test.doc

Si introduce un nombre de archivo con una extensión como "test.htm" entonces la extensión se cambia cuando se cambia el filtro.

Si introduce un nombre de archivo como "test.htm" y no cambie el filtro de la caja del interruptor se encarga de la extensión para usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top