0

不知何故,我今天早上似乎失明了;)我有以下代码[1],它确实从 ListBox 中读取了对象集合。使用字符串 bi 可以“检索”字符串

在 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 中初始化一些变量:Fo​​rm

4

3 回答 3

1

定义bList<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\\");
}

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

于 2013-03-18T07:58:43.543 回答
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...
}
于 2013-03-18T06:31:55.010 回答
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 项目。

于 2013-03-18T06:35:43.733 回答