visual uso una tipos hacer elementos dialogo cuadros cuadro computadora como abrir c# wpf save

c# - uso - cuadros de dialogo pdf



¿Cómo se muestra un cuadro de diálogo Guardar como en WPF? (6)

Aquí hay un código de muestra:

string fileText = "Your output text"; SaveFileDialog dialog = new SaveFileDialog() { Filter = "Text Files(*.txt)|*.txt|All(*.*)|*" }; if (dialog.ShowDialog() == true) { File.WriteAllText(dialog.FileName, fileText); }

Tengo un requisito en WPF / C # para hacer clic en un botón, reunir algunos datos y luego ponerlo en un archivo de texto que el usuario puede descargar a su máquina. Puedo obtener la primera mitad de esto, pero ¿cómo se le pregunta a un usuario con un cuadro de diálogo "Guardar como"? El archivo en sí será un archivo de texto simple.


SaveFileDialog está en el espacio de nombres de Microsoft.Win32; podría ahorrarle los 10 minutos que tardé en resolver esto.


Solo necesita crear un SaveFileDialog y llamar a su método ShowDialog.


Todos los ejemplos hasta ahora usan el espacio de nombres de Win32, pero hay una alternativa:

FileInfo file = new FileInfo("image.jpg"); var dialog = new System.Windows.Forms.SaveFileDialog(); dialog.FileName = file.Name; dialog.DefaultExt = file.Extension; dialog.Filter = string.Format("{0} images ({1})|*{1}|All files (*.*)|*.*", file.Extension.Substring(1).Capitalize(), file.Extension); dialog.InitialDirectory = file.DirectoryName; System.Windows.Forms.DialogResult result = dialog.ShowDialog(this.GetIWin32Window()); if (result == System.Windows.Forms.DialogResult.OK) { }

Estoy usando un método de extensión para obtener IWin32Window del control visual:

#region Get Win32 Handle from control public static System.Windows.Forms.IWin32Window GetIWin32Window(this System.Windows.Media.Visual visual) { var source = System.Windows.PresentationSource.FromVisual(visual) as System.Windows.Interop.HwndSource; System.Windows.Forms.IWin32Window win = new OldWindow(source.Handle); return win; } private class OldWindow : System.Windows.Forms.IWin32Window { private readonly System.IntPtr _handle; public OldWindow(System.IntPtr handle) { _handle = handle; } System.IntPtr System.Windows.Forms.IWin32Window.Handle { get { return _handle; } } } #endregion

Capitalize() también es un método de extensión, pero no vale la pena mencionarlo, ya que hay muchos ejemplos de capitalización de la primera letra de una cadena.



Ambas respuestas hasta ahora se vinculan a la clase Silverlight SaveFileDialog ; la variante de WPF es bastante diferente y tiene un espacio de nombres diferente.

Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); dlg.FileName = "Document"; // Default file name dlg.DefaultExt = ".text"; // Default file extension dlg.Filter = "Text documents (.txt)|*.txt"; // Filter files by extension // Show save file dialog box Nullable<bool> result = dlg.ShowDialog(); // Process save file dialog box results if (result == true) { // Save document string filename = dlg.FileName; }