问题描述
首先我要指出,我是 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