2013-07-07 2 views
0

사용할 수있는 모든 재능 정보를 입력하는 데 사용할 영화 제작 비즈니스 용 WinForm 앱을 제작하고 있습니다. 각 인재의 정보를 입력하고 "레코드 추가"버튼을 클릭하면 텍스트 상자가 모두 DataGrid 및 텍스트 파일에 추가됩니다. 그래서 같은 정보를 추가하고있다 : 그것은 등등이C# 줄 바꿈 텍스트 파일을 DataGrid 셀에

Actor1Info1 
Actor1Info2 
Actor1Info3 
Actor1Info4 
Actor1Info5 
Actor1Info6 
Actor2Info1 
Actor2Info2 
Actor2Info3 

과 같이 읽어 있도록

public void AddToActorFile() 
    { 
     List<string> actorList = new List<string>(); 
     actorList.Add(midianTalent.Name); 
     actorList.Add(midianActor.CharacterName); 
     actorList.Add(midianActor.CastHeight); 
     actorList.Add(midianActor.CastWeight); 
     actorList.Add(midianActor.CastAge); 
     actorList.Add(midianActor.CastSSN); 
     actorList.Add(imageFileName); 
     // B. 
     string[] actorArray = actorList.ToArray(); 
     File.AppendAllLines(@"Cast.txt", actorArray); 

     MessageBox.Show(cbPosition.SelectedItem + " Added to Cast File"); 
     AddActorToDataGrid(); 
    } 

    public void AddActorToDataGrid() 
    { 
     actorDataGrid.Rows.Add(midianTalent.Name, midianActor.CastAge, midianActor.CastHeight, midianActor.CastWeight, midianActor.CastSSN, imageFileName); 

    } 

TEXTFILE가 구분 선을 끝납니다. . . 각 액터에는 6 개의 필드가 있습니다.이 필드는 곧바로 하나씩 쓰여집니다.

그런 다음 응용 프로그램을 닫고 다시 열면 텍스트 파일에 각 액터의 정보가 자동으로 채워집니다. DataGrid에는 6 개의 열이 있고 각 행에는 1 개의 액터가 있으며 각 열에는 관련 정보가 들어 있습니다.

텍스트 파일을 읽을 수 없다는 점을 제외하고는 위의 모든 작업이 올바르게 수행됩니다. 내가

 public void ReadTalentFileData() 
    { 
     using (StreamReader fileReader = new StreamReader("Talent.txt")) 
     { 
      int column = 0; 
      string fileLine; 
      while ((fileLine = fileReader.ReadLine()) != null) 
      { 
       string[] cells = fileLine.Split('\n'); 
       talentDataGrid.Rows.Add(); 
       for (int i = 0; i < cells.Length; i++) 
       { 
        talentDataGrid[column, i].Value = cells[i]; 
       } 
       column++; 

      } 
     } 
    } 

첫 번째 배우가 잘 나열되어 다음과 같은 방법을 사용하고 있지만, 내가 거기에 넣어 얼마나 많은 배우 상관없이, 즉 나타 유일한 기록이다, 나는 또한 비어있는 내 데이터 그리드에 추가 행이 . 누구든지 내 readfile 메서드에서 어디서 잘못 될지 파악하여 각 액터가 DataGrid에 나타나도록 도울 수 있습니까?

또한 코드 리팩터링에 대한 정보를 환영합니다.

내 배우가 각각이 응용 프로그램을 사용하게되므로 결국 온라인 MySQL 데이터베이스에서 읽기 및 쓰기로 변경됩니다.하지만이 로컬 복사본을 사용하여 각 인재의 정보를 입력 할 수 있기를 바랍니다. 그런 다음 텍스트 파일을 데이터베이스로 내보내고 데이터베이스에 필요한 변경 사항을 적용한 다음 내 재능에 앱을 릴리스합니다.

답변

0

액터 당 6 줄 대신 쉼표로 구분 된 값으로 줄을 결합합니다.

var line = string.Join(",", actorList); 

다음은 각 줄이 액터이기 때문에 간단히 파일을 읽을 수 있습니다.

foreach(var line in File.ReadLines("Talent.txt")) 
{ 
    var columns = line.Split(','); 
    talentDataGrid.Rows.Add(columns) 
} 
+0

조인 사용에 대한 제안을 사용하여 텍스트 파일에 쉼표로 구분 된 목록을 만들었지 만 데이터 그리드에 원본을 바인딩하지 않으므로 읽기가 작동하지 않습니다. . . 하지만 이제 쉼표로 구분 된 목록으로 만들었으므로 인터넷에서 찾은 많은 예제 중 하나를 사용하여 파일을 쉽게 읽을 수 있습니다. 줄 바꿈으로 구분 된 목록을 다루는 많은 파일을 찾지 못했거나 쉼표로 구분 된 파일로 변환하는 방법을 보여주었습니다. . . 감사합니다 – Tearstar

+0

아. 문자열 배열 인'columns'을 사용하여 각 색인을 해당 열에 할당 할 수 있습니다. 나는 편집을 던질 것이다. – Romoku

+0

멋진, 매력처럼 작동합니다. . . 고맙습니다 – Tearstar