C# SaveFileDialog 不创建文件也不会关闭
C# SaveFileDialog doesn't create a file and won't close
首先我要指出,我是 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 文件,但单击“保存”后不会保存任何文件,然后单击“保存”后,对话框会一次又一次打开,直到我 select 取消。
如果我尝试添加
SaveFileDialog.Close();
我收到一条错误消息,指出“SaveFileDialog”不包含 'Close' 的定义,但我想我必须设置 something 告诉对话框在点击保存后关闭。
这里对我最有帮助的是对此的“修复”,然后是代码中的一些注释,解释每一行发生的事情,以便我执行更多相关搜索并进一步阅读。
也就是说,我们将不胜感激。如果我需要在此示例中包含其他代码,请告诉我。
我希望将“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
首先我要指出,我是 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 文件,但单击“保存”后不会保存任何文件,然后单击“保存”后,对话框会一次又一次打开,直到我 select 取消。
如果我尝试添加
SaveFileDialog.Close();
我收到一条错误消息,指出“SaveFileDialog”不包含 'Close' 的定义,但我想我必须设置 something 告诉对话框在点击保存后关闭。
这里对我最有帮助的是对此的“修复”,然后是代码中的一些注释,解释每一行发生的事情,以便我执行更多相关搜索并进一步阅读。
也就是说,我们将不胜感激。如果我需要在此示例中包含其他代码,请告诉我。
我希望将“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