Estoy intentando hacer que SaveFileDialog
y FileOpenDialog
hagan cumplir una extensión del nombre de archivo ingresado por el usuario. He intentado usar la muestra se propone en question 389070 pero no funciona como se esperaba:System.Windows.Forms.SaveFileDialog no impone la extensión predeterminada
var dialog = new SaveFileDialog())
dialog.AddExtension = true;
dialog.DefaultExt = "foo";
dialog.Filter = "Foo Document (*.foo)|*.foo";
if (dialog.ShowDialog() == DialogResult.OK)
{
...
}
Si el usuario escribe el texto test
en una carpeta en un archivo test.xml
pasa de existir, el diálogo sugerirá el nombre test.xml
(Mientras que realmente solo quiero ver *.foo
en la lista). Peor aún: si el usuario selecciona test.xml
, de hecho obtendré test.xml
como nombre de archivo de salida.
¿Cómo me puedo asegurar de que SaveFileDialog
realmente solo permita al usuario seleccionar un archivo *.foo
? ¿O al menos, que reemplaza/agrega la extensión cuando el usuario hace clic en Save
?
Las soluciones sugeridas (implementar el controlador de eventos FileOk
) solo hacen parte del trabajo, ya que realmente me gustaría deshabilitar el botón Save
si el nombre del archivo tiene la extensión incorrecta.
el fin de mantenerse en el diálogo y actualizar el nombre del archivo que se muestra en el cuadro de texto en el controlador FileOk
, para reflejar el nuevo nombre del archivo con la extensión correcta, consulte la following related question.
No estoy seguro, pero podría intentar establecer multipleDottedExtensions en True, quizás esto cambie ese comportamiento. – Bobby
No, esto no cambia nada en absoluto; pero gracias por la pista. –