2013-03-18 63 views
0

不知何故,我似乎今天早上是盲目的;) 我有以下代码[1],它读取对象集合列表框中的 。 与串B I可以“检索”的字符串对于变量中的每个列表框项目

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之外使用...所以有些变量在公共部分类窗体2初始化:当你评论,你想从其他地方也喜欢叫它形式

+0

你想做什么?我想,你在'ListBox'中有一个文件名列表,并且你想把它们全部复制到另一个目录中。我对吗? – 2013-03-18 07:02:44

+0

差不多......我想复制它们是的......但不知何故我错过了一个字符串数组......所有下面显示的例子都只能用,如果我在btnBenutz_Click内部使用foreach ...我需要foreach工作像300线以下... – incubuzz1978 2013-03-18 07:54:46

回答

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

也许更好的'Environment.NewLine'? – abatishchev 2013-03-18 06:35:45

+0

嘿丹尼斯,感谢您的重播......对我来说看起来很好---字符串生成器如何在全球初始化? – incubuzz1978 2013-03-18 06:48:49

+0

@abatishchev:你说得对,它会更好。 – Dennis 2013-03-18 07:26:54

0

另一个按钮点击即可 做这样的事情:

1)一流水平

List<string> fileNameList ; 

2)创建一些meaningfull名称的函数声明字符串列表让我们说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中的项目迭代。

+0

问题是...在foreach不能用按钮来使用。 .. 代码如下超越按钮500线......所以我必须 申报b和filenamelist全球 – incubuzz1978 2013-03-18 06:46:26

+0

你在说什么????? – TalentTuner 2013-03-18 06:47:09

+0

究竟你想要什么? – Popeye 2013-03-18 06:57:37

1

Define b as 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\\"); 
} 

如果这就是你想要实现的!

+0

这就是我想要达到的;)谢谢你... fileNames.Add(x);哪里需要定义? – incubuzz1978 2013-03-18 08:57:27

+0

@ incubuzz1978在任何方法之外定义'fileNameList'。无论在哪里,只要在表格课上。请参阅[C#编程指南中的字段](http://msdn.microsoft.com/zh-cn/library/ms173118.aspx)。 – 2013-03-18 10:08:38

相关问题