如何使用 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 打开保存对话框以保存应用程序生成的文件?

C# OpenFileDialog和SaveFileDialog:打开文件与保存文件

C# “文件选择对话框“ 和 “保存对话框“

C# “文件选择对话框“ 和 “保存对话框“

C# 使用保存对话框将图片框另存为 jpeg

在 C# 中使用 SaveFileDialog 保存为特定文件格式