2013-07-07 32 views
0

我正在爲我的電影製作業務構建一個WinForm應用程序,我將使用它輸入所有可用的人才信息。輸入每個人纔信息並點擊「添加記錄」按鈕後,文本框將全部添加到數據網格和文本文件中。我加入像這樣的信息:C#將行文本文件分隔到DataGrid單元格

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); 

    } 

文本文件結束分隔線,所以它讀取像這樣

Actor1Info1 
Actor1Info2 
Actor1Info3 
Actor1Info4 
Actor1Info5 
Actor1Info6 
Actor2Info1 
Actor2Info2 
Actor2Info3 

等。 。 。所以每個演員有6個字段可以一個接一個地寫入

然後我想關閉應用程序,當我重新打開它時,讓文本文件自動填充每個演員的信息的數據網格。該數據網格有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++; 

      } 
     } 
    } 

第一男主角列出了罰款,但不管有多少演員擺在那裏,這是顯示了國內唯一的記錄,我也有我的DataGrid是空白的額外行。任何人都可以幫我弄清楚我的readfile方法出錯的地方,以便每個actor都出現在datagrid中。

我也歡迎重構代碼的提示。

我最終會改變它來讀取和寫入我的在線MySQL數據庫,因爲我會讓每個演員都使用這個應用程序,但是我想讓這個本地副本工作,這樣我就可以將每個人才的信息放在那裏。然後,我會將文本文件導出到數據庫,對數據庫進行所需的更改,然後將應用程序發佈給我的人才。

回答

0

我會將行加入逗號分隔值而不是每個actor的6行。

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

接下來,您可以簡單閱讀文件,因爲每行都是演員。

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

使用關於使用Join的建議,我現在讓它在文本文件中創建一個以逗號分隔的列表,但由於我沒有將數據源綁定到數據網格,所以閱讀不起作用。 。 。但現在我已經把它列入了一個以逗號分隔的列表,我可以使用我在互聯網上找到的許多例子之一輕鬆讀取文件。 我只是無法找到許多處理行分隔列表或顯示如何將其轉換爲逗號分隔。 。 。謝謝 – Tearstar

+0

啊。你可以使用'columns'作爲一個字符串數組,並將每個索引分配給相應的列。我會投入編輯。 – Romoku

+0

美妙,像魅力一樣工作。 。 。謝謝 – Tearstar

相關問題