空路径名不合法 [英] empty path name not legal

查看:1224
本文介绍了空路径名不合法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个保存按钮,这样当用户点击,它会做的XML文件的保存(XML序列化)。一个savefiledialog用在这里,当我按下取消而不选择参数异常的发生,并表示所有文件空路径名称是不合法的。我要如何处理这个异常?我想形式保持不变,即使没有在savefiledialog选择的路径。 。非常感谢



我savefiledialog片段:

 私人无效SaveButton_Click(对象发件人,RoutedEventArgs E)
{
串savepath;
SaveFileDialog DialogSave =新SaveFileDialog();
//默认文件扩展名
DialogSave.DefaultExt =TXT
//可用的文件扩展名
DialogSave.Filter =XML文件(*的.xml)| *的.xml |所有文件| *。*(*。*)。
//如果用户没有
DialogSave.AddExtension = TRUE添加一个扩展;
//恢复所选目录,下一次
DialogSave.RestoreDirectory = TRUE;
//对话框的标题
DialogSave.Title =你想去哪儿来保存文件?
//启动目录
DialogSave.InitialDirectory = @C:/;
DialogSave.ShowDialog();
savepath = DialogSave.FileName;
DialogSave.Dispose();
DialogSave = NULL;
...
使用(流savestream =新的FileStream(savepath,FileMode.Create))
{
XmlSerializer的序列化=新的XmlSerializer(typeof运算(FormSaving));
serializer.Serialize(savestream,formsaving);
}

}



发生在这条线我的参数异常

 使用(流savestream =新的FileStream(savepath,FileMode.Create))
{
的XmlSerializer串行器=新的XmlSerializer(typeof运算(FormSaving));
serializer.Serialize(savestream,formsaving);
}


解决方案

这里的问题是,你不关心保存对话框的结果,并试图保存,即使用户点击取消。您应该修改代码,看起来像这样来代替:

  ... 
DialogSave.InitialDirectory = @C :/;
如果(DialogSave.ShowDialog()== DialogResult.OK)
{
savepath = DialogSave.FileName;
DialogSave = NULL;
...
使用(流savestream =新的FileStream(savepath,FileMode.Create))
{
XmlSerializer的序列化=新的XmlSerializer(typeof运算(FormSaving));
serializer.Serialize(savestream,formsaving);
}
}
DialogSave.Dispose();


I have a "save" button so when users click, it will do a saving of xml file(xml serialization). A savefiledialog is used here and when i press cancel without selecting any file an "Argument Exception" occurs and says "Empty path name is not legal". How do i handle this exception? I would like the form to remain the same even without any path selected in the savefiledialog. Many thanks.

My savefiledialog snippet:

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);
        }

}

My argument exception occurs at this line:

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

解决方案

The problem here is that you do not care about the result of the Save dialog, and you try to save even if the user clicked Cancel. You should change the code to look something like this instead:

...
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();

这篇关于空路径名不合法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆