所以基本上,我有一个从文本框中的用户输入开始的过程。 但是,该过程中的一个参数包含用户具有但已重命名的文件夹。只有在重命名之后才开始这个过程。所以我得到了。
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。
答案 0 :(得分:3)
是的,你正在调用Directory.Move
,它只有一个重载,有两个字符串参数。目前尚不清楚为什么/你希望如何工作。
我怀疑你错过了对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);
答案 1 :(得分:1)
此方法只有一个签名Directory.Move(string, string)
你试图用3个参数调用它...签名不存在。看看HERE。
我认为你试图将你的一个参数作为string.Format(),并且你还没有说清楚......也许你正在使用ReSharper?