2016-05-29 4 views
0

基本的に、私はテキストボックスのユーザー入力から始まるプロセスを持っています。 しかし、プロセスの引数の1つに、ユーザーが持っているが名前を変更したフォルダが含まれています。名前が変更された後でなければ、プロセスが開始されません。だから私は得た。私はというエラーを取得しDirectory.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一部で

、:メソッド「移動」の過負荷は、3つの引数を取ります。 私は{0}の終わりにkommaのために推測しています。

+1

まあ、はい、[ 'ディレクトリのないオーバーロードはありません。 Move'](https://msdn.microsoft.com/en-us/library/system.io.directory.move(v = vs.110).aspx)に3つのパラメータを入力します。あなたは何を求めていますか?どのように3つの議論すべてを*使用すると思いますか?おそらく 'string.Format'を呼び出すことを意味しますか? (おそらく '{0}'というディレクトリがあるのではないかと思われます) –

+0

'{0}'は 'string.Format()'に使われています。おそらくコードのどこかにはありません。 –

+0

{0}はディレクトリの先頭です。私にとっては、e:\ Aaron \ Addonsは{0}の背後にあるwhatsを続けます。その後、textbox2.textはそれを{0}はしないはずですか? – AaronKek

答えて

3

はい、Directory.Moveを呼び出していますが、これには2つの文字列パラメータを持つ1つのオーバーロードしかありません。なぜ、どのようにそれが働くことを期待しているのかは明らかではありません。

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 = [email protected]"{textBox2.Text}\@Jonzie Mega Mod Pack"; 
string destination = [email protected]"{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); 
+0

ええ、それはdirsに@記号を持っています。 @はそのゲームのためのモッドパックを示しています。 – AaronKek

+0

@AaronKek:さて、最後のビットが削除されます。 –

+0

私はこれがうまくいくと確信していますが、ボタンをクリックすると、if部分をスキップするように見えます。それはまっすぐ行く? – AaronKek

1

このメソッドは、あなたが署名が存在しない3つの引数...とそれを呼び出すようにしようとしているDirectory.Move(string, string)

である1人の署名を持っています。見てくださいHERE

私はあなたの引数の1つをstring.Format()として持っていて、それを明確にしていないと思います...おそらくReSharperを使用していますか?

関連する問題