C# 对于变量中的每个listbox项

C# 对于变量中的每个listbox项,c#,foreach,listbox,C#,Foreach,Listbox,不知怎的,今天早上我好像瞎了;) 我有下面的代码[1],它确实是 从列表框中删除对象集合。 使用字符串b,我可以“检索”字符串 在b中存储有文件名和目录路径 我想用xcopy代码[2]备份的 代码: 更多代码: Process.Start("XCOPY.EXE", "/E /I /Y" + b + pfadauswahl + "\\Backup\\" + dt.ToString("yyyy-MM-dd") + "\\UserData\\"); 如何使用b作为可能必须使用的数组?否则,始终只读

不知怎的,今天早上我好像瞎了;) 我有下面的代码[1],它确实是 从列表框中删除对象集合。 使用字符串b,我可以“检索”字符串

在b中存储有文件名和目录路径 我想用xcopy代码[2]备份的

代码:

更多代码:

 Process.Start("XCOPY.EXE", "/E /I /Y" + b + pfadauswahl + "\\Backup\\" + dt.ToString("yyyy-MM-dd") + "\\UserData\\");

如何使用b作为可能必须使用的数组?否则,始终只读取第一项?另外,我必须在btnBenutz之外使用的过程开始。。。因此,一些变量必须在公共部分类Form2:Form中初始化,正如您所评论的,您想从其他地方调用它,也可以像单击另一个按钮一样
private void btnBenutz_Click(object sender, EventArgs e)
{
    var sb = new StringBuilder();
    foreach (string x in listBox1.Items)
    {
        sb.Append("\n" + x);
    }
    // then use sb.ToString() somewhere...
}
这样做:

1) 在类级别声明字符串列表

 List<string> fileNameList ;

注意:这里我假设您总是遍历列表框1项。

b
定义为
列表
。您还可以使用更好的名称,如
fileNameList

private List<string> fileNameList; // a class field, not a local variable
然后在另一个位置,对每个文件运行
xopy
命令:

foreach(string fileName in fileNameList)
{
    Process.Start("XCOPY.EXE", "/E /I /Y " + fileName + pfadauswahl + "\\Backup\\" + dt.ToString("yyyy-MM-dd") + "\\UserData\\");
}

如果这就是你想要达到的目标

也许更好的
环境。NewLine
?嘿,丹尼斯,谢谢你的重播。。。看起来不错——字符串生成器怎么可以全局初始化?@incubuzz1978:“全局初始化”是什么意思?你可以声明类字段而不是局部变量。我需要在按钮前面声明sb,这样我就可以在它的“外部”使用它。。。这就是我所说的全球…问题是。。。foreach不能与按钮一起使用。。。代码在按钮外大约有500行。。。因此,我必须声明b和filenamelist globally,如果我们以这个示例为例,我想使用按钮外部的foreach。。。e、 在另一个按钮中…你想做什么?我猜,您在
列表框中有一个文件名列表,您想将它们全部复制到另一个目录中。我说的对吗?几乎。。。我想复制它们是的。。。。但不知怎的,我错过了一个字符串数组。。。下面显示的所有示例仅在我在btnBenutz_单击中执行foreach时可用。。。我需要foreach像下面300行那样工作……这正是我想要实现的;)非常感谢。文件名。添加(x);需要在哪里定义它?@incubush1978在任何方法之外定义
fileNameList
。无论在哪里,只是在形式类。看见
 private void btnBenutz_Click(object sender, EventArgs e)
 {
      lblAusgabe2.Text = "";
      StartXcopy(); 
 }
private List<string> fileNameList; // a class field, not a local variable
private void btnBenutz_Click(object sender, EventArgs e)
{
    lblAusgabe2.Text = "";
    ListBox.ObjectCollection a = listBox1.Items;
    foreach (string x in a)
    {
        fileNames.Add(x);
        lblAusgabe2.Text += Environment.NewLine + x; // Why are you doing this?
    }
}
foreach(string fileName in fileNameList)
{
    Process.Start("XCOPY.EXE", "/E /I /Y " + fileName + pfadauswahl + "\\Backup\\" + dt.ToString("yyyy-MM-dd") + "\\UserData\\");
}