0

我可能做了一些有点愚蠢的事情,但看不到它是什么!

string pegasusKey = @"HKEY_LOCAL_MACHINE\SOFTWARE\Pegasus\";
        string opera2ServerPath = @"Server VFP\";
        string opera3ServerPath = @"O3 Client VFP\";
        string opera2InstallationPath = null;
        string opera3InstallationPath = null;

        //Gets the opera Installtion paths and reads to the string opera*InstallationPath
        opera2InstallationPath = (string)Registry.GetValue(pegasusKey + opera2ServerPath +    "System", "PathToServerDynamic", null);
        opera3InstallationPath = (string)Registry.GetValue(pegasusKey + opera3ServerPath + "System", "PathToServerDynamic", null);

        string Filesource = null;
        string[] FileList = (string[])e.Data.GetData(DataFormats.FileDrop, false);
        foreach (string File in FileList)
            Filesource = File;
        label.Text = Filesource;

        if (System.IO.Directory.Exists(opera3InstallationPath))
        {
            System.IO.File.Copy(Filesource, opera3InstallationPath);
            MessageBox.Show("File Copied from" + Filesource + "\n to" + opera3InstallationPath);
        }
        else
        {
            MessageBox.Show("Directory Doesn't Exist");
        }

用户将文件拖到窗口上,然后我获取应用程序的安装路径,然后将其用作源文件的目标。当应用程序运行时,它会抛出错误目录未找到。但是,如果目录不存在,是否应该进入 else 语句?一个令人头疼的简单应用程序!

4

1 回答 1

0

您的文件源必须无效。这是我的建议:

  1. 单步执行您的代码,在 if(Directory.Exists(...)) 代码块的第一行放置一个断点。
  2. 通过将文件源添加到监视窗口来检查它,检查它是否是您所期望的
  3. 打开“即时窗口”类型 File.Exists(Filesource) 并检查结果(应该是真的)。或者.. Directory.Exists(Path.GetDirectory(Filesource))

另外,我几乎可以肯定您的这部分代码中有逻辑错误。(您一遍又一遍地在循环中分配一个变量,您是要附加它吗?这没有意义)。

    string Filesource = null;
    string[] FileList = (string[])e.Data.GetData(DataFormats.FileDrop, false);
    foreach (string File in FileList)
        Filesource = File;
    label.Text = Filesource;
于 2012-10-15T08:55:18.547 回答