2016-05-04 6 views
0

NEW EDITフォーム「Button1_Click」に設定してください。は、C#での複数のテキストボックスにTXTから列を割り当て/

また、テキストボックスのデータを編集し、元の文字列形式の編集済みデータを"Button2_Click"のTXTファイルに保存するコードを書きました。ここで

が今問題です:フォーマットがなくなっていると値の間の休憩がたくさんあります:私はときのButton1 Clickに編集したTXTファイルとプレスを再呼び出し

、物事が厄介。

オリジナルのTXTファイルと編集されたTXTファイルとの間には目に見える違いはありませんが、コードはそのファイルで動作しません。

私は問題が起こりうるアイディアを持っているかもしれません。元のTXTファイルを呼び出すと、各が文字列配列の1つの要素に割り当てられます。 >>>データが5行の場合、5つの要素が1つの配列に格納されます

しかし、私のSAVEコードは、データ全体を1つの配列の1つの要素に割り当てます。私は配列[0]しか利用できないという意味です。

私はコーディングに新しいので、これについてあなたの助けが必要です。

ありがとうございます!ここで

は私のコードです: ます。private voidの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"; 


     } 

    } 

// SAVEコード

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

ORIGINAL POST

私はC#に新たなんだと私は私のGUIにテキストファイルからデータをインポートしたいですその値を複数のテキストボックスに分割します。

Example

私は上のtextBoxBにtextBoxA、列BにA列を割り当てるとすることを意味..

私はすでに、この上で何かを見つけたが、それが正常に動作して取得することはできません。

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

データが適切に割り当てられると、私はテキストボックス内のデータを編集し、元のテキストにこれらの値を保存したいですbuttonclickのファイル。

これはすでに簡単な解決策です。ただ、EventHandlerのにこのコードを追加し、それが正常に動作します:

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); 
       } 
      } 
     } 
関連する問題