2013-03-18 4 views
0

어떻게 든 오늘 나는 눈이 멀어지는 것 같습니다. ListBox에서 객체 컬렉션을 읽는 다음 코드 [1]가 있습니다. 문자열을 가진 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를 사용할 수 있습니까? 그렇지 않으면 첫 번째 항목 만 항상 읽혀집니다. 당신이 다른 장소도 좋아에서 호출 할 주석으로 양식

+0

무엇을하려고합니까? 나는 당신이'ListBox'에 파일 이름 목록을 가지고 있고, 다른 디렉토리에 그것들을 모두 복사하려고한다고 생각합니다. 내가 맞습니까? –

+0

거의 ... 내가 그들을 복사 할 예 ....하지만 어떻게 든 문자열 배열을 놓치고있다 ... 내가 아래에있는 모든 예제는 btnBenutz_Click 내에서 foreach 할 경우에만 사용할 수 있습니다 ... 나는 foreach는 아래 300 라인처럼 작동합니다 ... – incubuzz1978

답변

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

+0

안녕하세요, 데니스, 당신의 재연에 감사드립니다 ... 나에게 잘 어울립니다 --- 문자열 작성기를 어떻게 전역 적으로 초기화 할 수 있습니까? – incubuzz1978

+0

@abatishchev : 네 말이 맞아, 더 좋을거야. – Dennis

0

: 또한 과정은 내가 지금 어떤 변수가 공공 부분 클래스 Form2를 초기화해야합니다 ... btnBenutz 외부 사용해야 시작 이제

아래와 같은 StartXcopy을 가정 해 봅시다)

1 클래스 수준

List<string> fileNameList ; 

2) 일부 meaningfull 이름을 가진 함수를 만듭니다에서 문자열의 목록을 선언 : 다른 버튼 클릭 후 는 다음과 같이 수행

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

+0

무엇을 말하고 있습니까 ????? – TalentTuner

+0

정확히 무엇을 원하십니까? – Popeye

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

그게 달성하려는 경우!

+0

정확히 내가 뭘하고 싶은가;) 감사합니다 ... fileNames.Add (x); 어디에서 정의가 필요한가? – incubuzz1978

+0

@ incubuzz1978 메소드 외부에'fileNameList'를 정의하십시오. 어디에 있든 관계없이 양식 클래스에 있습니다. [C# 프로그래밍 가이드의 필드] (http://msdn.microsoft.com/en-us/library/ms173118.aspx)를 참조하십시오. –

관련 문제