方法移动没有重载
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);
所以基本上,我有一个从文本框中的用户输入开始的过程。 但是该过程中的参数之一包含用户拥有但已重命名的文件夹。只有在重命名之后,它才会启动该过程。所以我得到了。
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);