gpt4 book ai didi

c# - 空路径名不合法

转载 作者:太空狗 更新时间:2023-10-30 00:27:47 27 4
gpt4 key购买 nike

我有一个“保存”按钮,所以当用户单击时,它会保存 xml 文件(xml 序列化)。此处使用了一个保存文件对话框,当我在没有选择任何文件的情况下按下取消时,出现“参数异常”并显示“空路径名不合法”。我该如何处理这个异常?即使没有在保存文件对话框中选择任何路径,我也希望表单保持不变。非常感谢。

我的保存文件对话框片段:

private void SaveButton_Click(object sender, RoutedEventArgs e)
{
string savepath;
SaveFileDialog DialogSave = new SaveFileDialog();
// Default file extension
DialogSave.DefaultExt = "txt";
// Available file extensions
DialogSave.Filter = "XML file (*.xml)|*.xml|All files (*.*)|*.*";
// Adds a extension if the user does not
DialogSave.AddExtension = true;
// Restores the selected directory, next time
DialogSave.RestoreDirectory = true;
// Dialog title
DialogSave.Title = "Where do you want to save the file?";
// Startup directory
DialogSave.InitialDirectory = @"C:/";
DialogSave.ShowDialog();
savepath = DialogSave.FileName;
DialogSave.Dispose();
DialogSave = null;
...
using (Stream savestream = new FileStream(savepath, FileMode.Create))
{
XmlSerializer serializer = new XmlSerializer(typeof(FormSaving));
serializer.Serialize(savestream, formsaving);
}

}

我的参数异常发生在这一行:

using (Stream savestream = new FileStream(savepath, FileMode.Create))
{
XmlSerializer serializer = new XmlSerializer(typeof(FormSaving));
serializer.Serialize(savestream, formsaving);
}

最佳答案

这里的问题是您不关心“保存”对话框的结果,即使用户单击“取消”,您也会尝试保存。您应该将代码更改为如下所示:

...
DialogSave.InitialDirectory = @"C:/";
if( DialogSave.ShowDialog() == DialogResult.OK )
{
savepath = DialogSave.FileName;
DialogSave = null;
...
using (Stream savestream = new FileStream(savepath, FileMode.Create))
{
XmlSerializer serializer = new XmlSerializer(typeof(FormSaving));
serializer.Serialize(savestream, formsaving);
}
}
DialogSave.Dispose();

关于c# - 空路径名不合法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5139643/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com