C# 将异常获取为";参数不正确。\r\n";移动文件时

C# 将异常获取为";参数不正确。\r\n";移动文件时,c#,winforms,folderbrowserdialog,C#,Winforms,Folderbrowserdialog,我已经编写了一个代码来移动一个文件,如下所示 private void Move_Click(object sender, EventArgs e) { string strOrgpath = string.Empty, strNewpath = string.Empty; strOrgpath = tvwACH.SelectedNode.ToString(); string strPath = strOrgpath

我已经编写了一个代码来移动一个文件,如下所示

            private void Move_Click(object sender, EventArgs e)
    {
        string strOrgpath = string.Empty, strNewpath = string.Empty;
        strOrgpath = tvwACH.SelectedNode.ToString();
        string strPath = strOrgpath.Substring(10);
        FolderBrowserDialog folderborwser1 = new FolderBrowserDialog();

       if (folderborwser1.ShowDialog() == DialogResult.OK)
        {
            try
            {
                strNewpath = folderborwser1.SelectedPath;
                File.Move(strPath, strNewpath);
            }
            catch (Exception ex)
            {

            }
        }

    }

但是我得到了我提到的异常,任何人都能告诉我为什么,有时我会得到错误,因为对路径的访问被拒绝

而在运行时看不到应用程序中使用的值,我猜
tvwACH.SelecteNode.ToString()
strOrgpath.Substring(10)
不是有效的文件系统路径


您应该调试应用程序并设置一个断点以查看这些值是什么(如果此时问题不明显,则发布这些值)。

确保子字符串调用返回正确的结果。如果可能,请改用
路径
类中的静态方法。查看MSDN页面并注意需要哪些参数——您应该提供两个有效的完整文件名(例如
C:\Blah\myFile.txt

如果用户在“文件夹浏览器”对话框中选择了一个他们没有写入权限的文件夹,则可能会出现“拒绝访问”错误消息。这是您必须在代码中处理的场景,可能需要捕获
UnauthorizedAccessException

更新:目标文件还应指向文件名。因此,您需要执行以下操作:

var origFileName = Path.GetFileName(strPath);
strNewpath = Path.Combine(folderborwser1.SelectedPath, origFileName);
File.Move(strPath, strNewpath);

您是否检查了strPath和strNewPath的值,以确保它们在该文件中正确显示。是否移动?你能举例说明这些值可能是什么吗?我得到的值是正确的。初始路径将是treenode,因此我已获取该字符串的子字符串并将其分配给另一个字符串。我的子字符串仅返回正确的结果。我得到的路径为“c:\some.txt”,我希望将其移动到用户从FolderBrowserDialog中选择的其他目标。移动的目标也应为文件名。我更新了答案,加入了一些示例代码。