方法移动没有重载

No overload for method move

所以基本上,我有一个从文本框中的用户输入开始的过程。 但是该过程中的参数之一包含用户拥有但已重命名的文件夹。只有在重命名之后,它才会启动该过程。所以我得到了。

    private void button2_Click_1(object sender, EventArgs e)
    {
        if (File.Exists(@"{0}\@JonzieMegaModPack"))
        {
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.FileName = textBox1.Text;
            startInfo.Arguments =
                string.Format(@"-window -useBE {1} -mod={0}\@CBA_A3", textBox2.Text, textBox3);
            Process.Start(startInfo);
        }
        else
        {
            Directory.Move(@"{0}\@Jonzie Mega Mod Pack", @"{0}\@JonzieMegaModPack", textBox2.Text);
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.FileName = textBox1.Text;
            startInfo.Arguments =
                string.Format(@"-window -useBE {1} -mod={0}\@CBA_A3", textBox2.Text, textBox3);
            Process.Start(startInfo);
        }
    }

但是在else部分,Directory.Move 我收到错误消息:方法 'Move' 没有重载需要 3 个参数。 我猜是因为 {0} 结束时的 komma。

此方法只有一个签名Directory.Move(string, string)

您正在尝试使用 3 个参数调用它...签名不存在。看看HERE.

我认为您正在尝试将您的论点之一作为 string.Format(),但您没有说清楚...也许您正在使用 ReSharper?

是的,您正在调用 Directory.Move,它只有一个重载,带有两个字符串参数。不清楚 why/how 您是否希望它起作用。

我怀疑你错过了对 string.Format 的调用,例如

string source = string.Format(@"{0}\@Jonzie Mega Mod Pack", textBox2.Text);
string destination = string.Format(@"{0}\@JonzieMegaModPack", textBox2.Text);
Directory.Move(source, destination);

或者在 C# 6 中,您可以使用字符串插值:

string source = $@"{textBox2.Text}\@Jonzie Mega Mod Pack";
string destination = $@"{textBox2.Text}\@JonzieMegaModPack";
Directory.Move(source, destination);

我建议改用 Path.Combine

string source = Path.Combine(textBox2.Text, "@Jonzie Mega Mod Pack");
string destination = Path.Combine(textBox2.Text, "@JonzieMegaModPack");
Directory.Move(source, destination);