2013-03-18 57 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

相關問題