C# C SaveFileDialog不会创建文件,也不会关闭

C# C SaveFileDialog不会创建文件,也不会关闭,c#,xml,listbox,savefiledialog,C#,Xml,Listbox,Savefiledialog,首先,我要指出,我是C语言的完全初学者,我一直在尝试通过实践来学习 整个项目是一个媒体播放器,我正在从我一直在观看的几个YouTube视频中创建和扩充它。我想了解SaveFileDialog,以及如何将列表框中的项目保存到xml文件中 然而,在我到达那里之前,我很难让SaveFileDialog保存任何内容,然后关闭 以下是我正在使用的代码: public Form1() { InitializeComponent(); }

首先,我要指出,我是C语言的完全初学者,我一直在尝试通过实践来学习

整个项目是一个媒体播放器,我正在从我一直在观看的几个YouTube视频中创建和扩充它。我想了解SaveFileDialog,以及如何将列表框中的项目保存到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) ;
        }
现在,当我单击Save按钮btn_Save时,Save对话框将打开,默认为xml文件,但单击Save后不会保存任何文件,然后单击Save后,对话框将一次又一次打开,直到我选择Cancel

如果我尝试添加 SaveFileDialog.Close; 我得到一个错误,说SaveFileDialog不包含“Close”的定义,但我想我必须设置一些东西,告诉对话框在点击Save后关闭

这里对我帮助最大的是对这一点的修复,然后是代码中的一些注释,这些注释解释了每一行上发生的事情,以便我执行更相关的搜索并进一步阅读


也就是说,我们非常感谢您的帮助。请告诉我是否需要在此示例中包含其他代码。

以下是将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显示对话框-当对话框打开时,代码将在该点暂停,当对话框关闭时继续 检查结果,如果结果不正常,即用户单击了“取消”,则返回而不执行任何操作 否则,请执行类似于编写文件的操作
实际上,您需要使用从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

去掉saveFileDialog1.ShowDialog行;我很难理解这段代码如何不止两次地显示savedialog…saveFileDialog只返回文件名,而不创建文件。请参阅:这是一个错误,说明名称“File”在当前上下文中不存在。需要在某个地方定义文件吗?它是System.IO.File类。您需要一个using System.IO;在代码文件的顶部。你可以指向红色的摇摆线,一个带灯泡的按钮出现了,它也在边距中-在lighbulb菜单中,它会为你提供修复它的功能-单击顶部选项,它会将using语句添加到你的代码顶部,就是它!非常感谢。对于如何设置保存的文件以从列表框中获取文本,您有什么建议吗?列表框本身没有文本。。它们的项目是或可以表示为文本。如果要获取列表框的内容并写入文件,我建议您使用stringbuilder构建文本,并枚举列表框的项集合,依次处理每个项。它可以简单到var sb=新的StringBuilder;列表框中的foreachvar o.项目sb.附录o;File.writealTextSomePath,sb.ToString;