2016-05-04 42 views
0

新的編輯:分配列從TXT在C#中的多個文本框/表格

嗨,

我已經在幾個代碼工作,找到了最佳的解決方案來調用一個文本文件,並指定每列單獨的文本框on「Button1_Click」。

我還設法編寫了一個代碼,允許我編輯文本框中的數據,並將原始字符串格式的編輯數據保存到「Button2_Click」的TXT文件中。

這是現在的問題:

當我再次呼籲的button1_Click編輯的TXT文件,然後按,事情變得一團糟:格式消失了,有很多的值之間的斷裂。

原始的TXT文件和被編輯的文件之間沒有明顯的區別,但代碼不會使用它。

我可能有一個想法可能是什麼問題。當我調用原始TXT文件時,每個被分配給一個字符串數組的一個元素。 >>>當數據有5行時,5個元素存儲到一個數組中

但是我的SAVE代碼將整個數據分配給一個數組中的一個單獨元素。這意味着我只有數組[0]可用。

由於我是新手,我需要你的幫助。

謝謝!

這是我的代碼: 私人無效的button1_Click(對象發件人,EventArgs的) { textBox1.Text = 「」; textBox2.Text =「」; textBox3.Text =「」;

 var table = new DataTable(); 

     var fileContents = File.ReadAllLines(@"C:\Users\root\Desktop\TXT.txt"); 



     var splitFileContents = (from f in fileContents select f.Split(' ')).ToArray(); 



     int maxLength = (from s in splitFileContents select s.Count()).Max(); 




     for (int i = 0; i < maxLength; i++) 
     { 
      table.Columns.Add(); 
     } 



     foreach (var line in splitFileContents) 
     { 
      DataRow row = table.NewRow(); 
      row.ItemArray = (object[])line; 
      table.Rows.Add(row); 
     } 



     for (int i = 0; i< maxLength; i++) 
     { 


      textBox1.Text += table.Rows[i].ItemArray[0].ToString()+"\r\n"; 
      textBox2.Text += table.Rows[i].ItemArray[1].ToString() + "\r\n"; 
      textBox3.Text += table.Rows[i].ItemArray[2].ToString() + "\r\n"; 


     } 

    } 

//節省代碼

private void button2_Click(object sender, EventArgs e) 
    { 


     var table = new DataTable(); 
     string[] fileContents = new string[] { textBox1.Text, textBox2.Text, textBox3.Text }; 
     var splitFileContents = (from f in fileContents select f.Split('\r')).ToArray(); 
     int maxLength = (from s in splitFileContents select s.Count()).Max(); 



     for (int i = 0; i < maxLength; i++) 
     { 
      table.Columns.Add(); 
     } 



     foreach (var line in splitFileContents) 
     { 
      DataRow row = table.NewRow(); 
      row.ItemArray = (object[])line; 
      table.Rows.Add(row); 
     } 
     var test = ""; 



     for (int i = 0; i < 5; i++) 
     { 


      test += table.Rows[0].ItemArray[i].ToString() +" " + table.Rows[1].ItemArray[i].ToString() + " " + table.Rows[2].ItemArray[i].ToString() + "\r\n" ; 



     } 

     textBox4.Text += test[1]; 

     var stringArr = new string[] { test }; 



     File.WriteAllLines(@"C:\Users\root\Desktop\TXT.txt", stringArr); 

原帖

我是新的C#和我想從一個文本文件導入數據到我的GUI並將其值分成多個文本框。

Example

含義,我想列A至textBoxA和B列分配給textBoxB等..

我已經發現了這個東西,但不能讓它正常運行:

 DataTable myDataTable = new DataTable(); 

     string[] records = File.ReadAllLines(@"C:\Users\Me\Desktop\TXT.txt"); 
     foreach (string record in records) 
     { 
      DataRow r = myDataTable.NewRow(); 
      string[] fields = record.Split('\t'); 
      /* Parse each field into the corresponding r column 
      * .... 
      */ 
      myDataTable.Rows.Add(r); 
     /
     } 

一旦數據被正確地分配我想編輯的文本框的數據,並將這些值保存到原文按鈕上的文件。

爲此,我已經有了一個簡單的解決方案。只需添加該代碼的事件處理程序,它工作正常:

File.WriteAllText(@"C:\Users\Me\Desktop\1msmoorGUI\msmoor\TEXT.TXT", textBoxA.Text +" "+ textBoxB.Text); 

我的主要問題是列的每一個使用上述代碼的文本框的分配。

感謝您的幫助

回答

0
using System.IO; 

    var dt = new DataTable(); 
    dt.Columns.Add("Nr", typeof(int)); 
    //...your columns 
    dt.Columns.Add("Notite", typeof(string)); 

    using (StreamReader reader = new StreamReader(FilePath)) 
        { 
         string line; 
         while ((line = reader.ReadLine()) != null) 
         { 
          string[] Elements = line.Split('yourSplit'); 
          DataRow row = myDataTable.NewRow(); 
          row[0] = Elements[0]; 
          //.... 
          row[5] = Elements[5]; //depends on Elements 
          myDataTable.Rows.Add(row); 
         } 
        } 
    foreach(DataRow row in myDataTable.Rows) 
    { 
     textbox1.Text += row["col1"].ToString(); 
      /// 
     textbox2.Text += row["col2"].ToString(); 
    } 

//save 

private void btnSave_Click(object sender, RoutedEventArgs e) 
     { 
      using (StreamWriter writer = new StreamWriter(Path)) 
      { 
       foreach (DataRow row in myDataTable.Rows) 
       { 
        string line = string.Format("\"{0}\"_\"{1}\"_\"{2}\"_\"{3}\"_\"{4}\"_\"{5}\"", row[0], row[1], row[2], row[3], row[4], row[5]);//or your format 
        writer.WriteLine(line); 
       } 
      } 
     } 
相關問題