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. Filesource をウォッチ ウィンドウに追加して調べ、期待どおりかどうかを確認します。
  3. 「イミディエイト ウィンドウ」タイプ File.Exists(Filesource) を開き、結果を確認します (true である必要があります)。または.. 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 に答える