我在WPF/C#中有一个要求,点击一个按钮,收集一些数据,然后把它放在一个文本文件中,用户可以下载到他们的机器。我可以得到前半部分,但是如何通过“另存为”对话框提示用户?该文件本身将是一个简单的文本文件。如何在WPF中显示另存为对话框?
回答
这两个答案到目前为止链接到Silverlight SaveFileDialog
类; WPF variant是相当不同和不同的命名空间。
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;
}
你只需要创建一个SaveFileDialog,并调用它的ShowDialog方法。
-1这是SL;不是WPF – 2011-04-11 14:47:33
@Aaron谢谢,我链接到了错误的版本。我已经更新了我的答案,现在指出正确的答案。 – Twelve47 2011-04-11 14:50:26
SaveFileDialog位于Microsoft.Win32命名空间中 - 可能会为您节省10分钟的时间,它使我能够明白这一点。
下面是一些示例代码:
string fileText = "Your output text";
SaveFileDialog dialog = new SaveFileDialog()
{
Filter = "Text Files(*.txt)|*.txt|All(*.*)|*"
};
if (dialog.ShowDialog() == true)
{
File.WriteAllText(dialog.FileName, fileText);
}
所有到目前为止的例子使用Win32命名空间,但有一个选择:
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)
{
}
我使用的扩展方法从视觉控制中获得IWin32Window
:
#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()
也是一种扩展方法,但并不值得一提,因为有大量的例子将字符串的首字母大写。
你如何使用'GetIWin32Window'? – cMinor 2015-10-08 23:49:40
- 1. 如何在Electron App中显示另存为对话框?
- 2. 通过显示另存为对话框
- 3. 如何为iText生成的PDF显示另存为对话框?
- 4. 在Firefox中显示另存为对话框
- 5. 如何通过jQuery或Javascript在IE9和11中显示“另存为”对话框
- 6. 提示文件另存为对话框
- 7. WPF另存为对话框...在视图中?
- 8. 如何在文件下载时提示“另存为”对话框
- 9. 如何在asp.net中显示对话框
- 10. 如何在BlackBerry中显示对话框
- 11. 如何在对话框中显示UIPickerview
- 12. Android在另一个对话框顶部显示对话框
- 13. Android从对话框中显示另一个对话框
- 14. 如何为通过C#生成的Excel文件显示“另存为”对话框
- 15. 如何显示对话框
- 16. 如何在另一个上下文中显示对话框?
- 17. 使用Watin显示IE“另存为”对话框
- 18. 如何在MFC中将对话框保存为对话框
- 19. WPF ShowDialog不显示对话框
- 20. 启动时WPF显示对话框
- 21. 如何使用PHP显示“另存为”对话框文本文件
- 22. 如何在java中创建另存为对话框?
- 23. 另存为JSP中的对话框
- 24. 显示对话框另一个对话框后:挂起
- 25. 关闭主对话框并显示另一个为主对话框,MFC
- 26. 如何从WPF窗口显示Winforms对话框?
- 27. 显示对话框
- 28. 显示对话框
- 29. WPF - 棱镜:在对话框窗口中显示区域
- 30. 另存为对话框IEXPLORER如何保存htm文件
所以真的这个问题可以缩小到“如何在WPF中显示另存为对话框?” – RQDQ 2011-04-11 14:43:46