2011-02-05 40 views
2

我尝试在c#中做一个foreach循环。在textbox1中是位置,现在我将尝试列出textbox2中的所有文件夹。但我没有找到错误:c中的foreach问题#

 string[] filePaths = Directory.GetFiles(@"" + textBox1.Text + ""); 
     foreach (string value in filePaths) 
     { 
      textBox2.Text = "" + value + "\n"; 
     } 

我希望有人能帮助我。

Regards

+0

要在文本框中插入新行,请首先确保TextBox的MultiLine属性设置为True。然后使用\ r \ n(回车和新行),如下例所示:TextBox1.Text =“First line \ r \ nSecond line”; – 2011-02-05 17:59:30

+2

您可能想要使用“ListBox”或“ListView”而不是多行“TextBox”进行调查。对于你要显示的内容,这是一个更自然的控制,并且可以节省你做所有字符串连接的麻烦。 (另外,你为什么用``“`”终止“字符串?没有理由这么做,你没有添加空格,也没有空终止符,也不需要自己终止C#字符串) – 2011-02-05 18:00:16

+1

专业提示:为您的控件命名。你不想浪费你的时间搞清楚,如果人名是在textBox23或textBox17。 – 2011-02-05 18:00:33

回答

10

您正在重置每个迭代中的Text属性。至少使用+=而不是=。如果您使用的字符串数量很多,则值得了解有关字符串串联操作的StringBuilder类,特别是那些在循环内部发生的字符串串联操作。

StringBuilder sb = new StringBuilder(); 
foreach (string path in filePaths) 
{ 
    sb.AppendLine(path); 
} 
textBox2.Text = sb.ToString(); 
5

我给你修好了。

string[] filePaths = Directory.GetFiles(textBox1.Text); 
    foreach (string value in filePaths) 
    { 
     textBox2.Text += value + Environment.NewLine; 
    } 

您使用=代替+ =这意味着textBox2.Text只有列表,而不是所有的文件到了最后的文件名。

我也摆脱了一些毫无意义的“”你添加和改变“\ n”到Environment.NewLine。