如何使用 C# 添加保存文件对话框
Posted
技术标签:
【中文标题】如何使用 C# 添加保存文件对话框【英文标题】:How to add Save file Dialog Box using C# 【发布时间】:2011-09-14 11:55:45 【问题描述】:我需要实现类似于 Notepads' 保存选项的功能。假设我在RichTextBox
旁边放置了一个按钮,我想要的是,当单击此按钮时,会打开一个对话框,看起来类似于 另存为 时出现的对话框被点击。我想以文本格式保存 RichTextBox 的内容,方法是在 Save Dialogue 框中输入文件名。
【问题讨论】:
嗯,你是怎么知道使用 [savefiledialog] 标签的?假问题? @Hans:我正在输入保存文件,然后我被建议使用这个标签。在下面的答案之前,我虽然这个标签的字面意思是“保存文件的对话”。也就是说,我不知道它是一个控件的名称。 好吧,感谢 SO 在您发布之前给您答案。 【参考方案1】:private void Save_As_Click(object sender, EventArgs e)
SaveFileDialog _SD = new SaveFileDialog();
_SD.Filter = "Text File (*.txt)|*.txt|Show All Files (*.*)|*.*";
_SD.FileName = "Untitled";
_SD.Title = "Save As";
if (__SD.ShowDialog() == DialogResult.OK)
RTBox1.SaveFile(__SD.FileName, RichTextBoxStreamType.UnicodePlainText);
【讨论】:
感谢详细的帖子,它阐明了有关文件类型和标题的更多信息。添加一个默认文件名怎么样,怎么做? 仅在 if 块上添加此代码_SD.FileName = "Untitled";
【参考方案2】:
对于 WPF,您应该使用此 SaveFileDialog。
var dialog = new Microsoft.Win32.SaveFileDialog();
dialog.Filter = "Rich Text File (*.rtf)|*.rtf|All Files (*.*)|*.*";
dialog.FileName = "Filename.rtf"; //set initial filename
if (dialog.ShowDialog() == true)
using (var stream = dialog.OpenFile())
var range = new TextRange(myRichTextBox.Document.ContentStart,
myRichTextBox.Document.ContentEnd);
range.Save(stream, DataFormats.Rtf);
【讨论】:
如何保存内容。 XAML 标记可能会打开一个对话框,但内容应该如何保存? @Sam,OpenFile 需要较少的权限。 FileOutputStream 也不是 java 吗?? 我在 C# 2005 中使用 FileOutputStream。像这样使用.. java.io.OutputStream ostream = new java.io.FileOutputStream(new java.io.File(FileName)); WorkBook.write(ostream); ostream.close();【参考方案3】:这适用于文本文件,并在 WPF
中进行了测试。
var dialog = new Microsoft.Win32.SaveFileDialog();
dialog.Filter = "Text documents (.txt)|*.txt|All Files (*.*)|*.*";
dialog.FileName = "Filename.txt";
if (dialog.ShowDialog() == true)
File.WriteAllText(dialog.FileName, MyTextBox.Text);
【讨论】:
【参考方案4】:SaveFileDialog sfDialog = new SaveFileDialog();
sfDialog.ShowDialog();
OutputStream ostream = new FileOutputStream(new File(sfDialog.FileName));
WorkBook.write(ostream);
ostream.close();
【讨论】:
.net 中是否存在 FileOutputStream?【参考方案5】:误读了问题 - Ray 的回答对 OP 有效
这仅适用于 Windows 窗体。
你应该看看 SaveFileDialog 类:http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog.aspx
并使用类似这样的方式保存文件(参见here):
rtf.SaveFile(dialog.FileName);
【讨论】:
感谢您的链接。那么来自 RichTextBox 的文件内容呢?该内容将如何保存到相应的文件中? 添加了一些关于从 RTF 保存文件的更多信息。 用Microsoft.Win32.SaveFileDialog
替换 System.Windows.Forms
命名空间,我认为你很高兴。
RichTextBox 在 WPF 中没有 SaveFile
该死的,我错过了那个。你是对的。您的回答完美地解决了 OP 的问题,我的错。【参考方案6】:
您可以使用SaveFileDialog
组件,阅读here 了解它的工作原理和工作示例。
【讨论】:
以上是关于如何使用 C# 添加保存文件对话框的主要内容,如果未能解决你的问题,请参考以下文章
如何使 c# 控制台应用程序 .exe 打开保存对话框以保存应用程序生成的文件?