C# SaveFileDialog 不会创建文件并且不会关闭

问题描述

首先我要指出,我是 C# 的完全初学者,我一直在努力“边做边学”。

整个项目是一个媒体播放器,我正在根据我一直在观看的几个 YouTube 视频进行创作和扩充。我现在想了解 SaveFileDialog 以及如何将 ListBox 中的项目保存到 xml 文件中。

然而,在我到达那里之前,我无法让 SaveFileDialog 保存任何内容然后关闭

这是我正在使用的代码

 public Form1()
        {
            InitializeComponent();
        }
        
        private void btn_save_Click(object sender,EventArgs e)
        {
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.Filter = "XML-File | *.xml";
            saveFileDialog1.Title = "Save Playlist";
            saveFileDialog1.ShowDialog();

            if (saveFileDialog1.ShowDialog() == DialogResult.OK) ;
        }

现在,当我单击“保存”按钮 (btn_save) 时,将打开保存对话框,认为 xml 文件,但单击保存后不会保存任何文件,然后单击保存后,对话框只是一次又一次地打开,直到我选择取消。

如果我尝试添加 SaveFileDialog.Close(); 我收到一条错误消息,说“SaveFileDialog”不包含“关闭”的定义,但我想我必须设置某些东西,告诉对话框在点击“保存”后关闭

这里对我最有帮助的是对此的“修复”,然后是代码中的一些注释,用于解释每行发生的情况,以便我执行更多相关搜索并进一步阅读。

也就是说,对此的任何帮助将不胜感激。如果我需要在此示例中包含其他代码,请告诉我。

解决方法

我希望将“hello world”写入文本文件的代码如下所示:

private void btn_save_Click(object sender,EventArgs e)
{
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
    saveFileDialog1.Filter = "Text file | *.txt";
    saveFileDialog1.Title = "Save Playlist";
    
    if (saveFileDialog1.ShowDialog() != DialogResult.OK) 
      return;

    File.WriteAllText(saveFileDialog1.FileName,"hello world");
}

您可以针对 XML 等对其进行调整,但关键概念是:

  • 使用 ShowDialog() 显示对话框 - 您的代码将在对话框打开时暂停,并在对话框关闭时恢复
  • 检查结果,如果结果不正常(即用户点击了取消),return 不做任何事情
  • 否则,做一些事情(比如写一个文件)
,

您实际上需要使用从 SaveFileDialog 组件获取的信息来保存文件。

也许这对你有帮助:

public Form1()
{
  InitializeComponent();
}

private void btn_save_Click(object sender,EventArgs e)
{
  Stream myStream ;
  SaveFileDialog saveFileDialog1 = new SaveFileDialog();
  saveFileDialog1.Filter = "XML-File | *.xml";
  saveFileDialog1.Title = "Save Playlist";
  saveFileDialog1.ShowDialog();

  if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
  {
    if((myStream = saveFileDialog1.OpenFile()) != null)
    {
      // Code to write the stream goes here.
      myStream.Close();
    }
  } //end if ShowDialog
} //end Click Button

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...