对于变量中的每个列表框项

时间:2013-03-18 06:25:45

标签: c# foreach listbox

不知怎的,我今天早上似乎是瞎了;) 我有以下代码[1],它确实阅读 ListBox中的对象集合。 使用字符串b我可以“检索”字符串

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

代码:

private void btnBenutz_Click(object sender, EventArgs e)
{
    lblAusgabe2.Text = "";
    ListBox.ObjectCollection a = listBox1.Items;
    foreach (string x in a)
    {
        b = x;
        lblAusgabe2.Text += "\n" + b;
    }
}

更多代码:

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

我如何使用b作为我可能需要的数组?否则只会读出第一项?此过程开始我必须在btnBenutz之外使用...所以一些变量必须在公共分部类Form2中初始化:Form

3 个答案:

答案 0 :(得分:1)

b定义为List<string>。您还可以使用更好的名称,例如fileNameList

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?
    }
}

然后在另一个地方,为每个文件运行xopy命令:

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

如果这是你想要实现的目标!

答案 1 :(得分:0)

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...
}

答案 2 :(得分:0)

如您所评论,您想要从其他地方调用它,也可以像其他按钮一样点击 做这样的事情:

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

 List<string> fileNameList ;

2)使用一些有意义的名称创建一个函数,让我们说如下面的StartXcopy

public void StartXcopy()
{
       ListBox.ObjectCollection a = listBox1.Items;
       fileNameList = new List<string>();
       foreach (string x in a)
       {
            fileNameList.Add(x);
            lblAusgabe2.Text += "\n" + x;
       }

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

3)然后从您想要的地方调用此功能,如下面的按钮单击

 private void btnBenutz_Click(object sender, EventArgs e)
 {
      lblAusgabe2.Text = "";
      StartXcopy(); 
 }

注意:我假设您总是在遍历listBox1项目。