2017-03-04 53 views
0

ユーザー入力を取り込んでカンマ区切りでテキストファイルに書き込んで、新しい行を追加するWindowsフォームを作成しました。私はそのファイルからすべてのデータを読み込み、リッチテキストボックスまたはラベルの別のウィンドウフォームでユーザーに表示したいと考えています。C#カンマ区切りテキストファイルからWindowsフォームへの読み込み

以下のコードは、私のマシン上の特定の場所にデータを読み込むためのコードです。最初にデータを配列に読み込んだ後、ラベルやテキストボックスに送る必要があるかどうかはわかりません。

using (StreamWriter InputFile = File.AppendText(@"C:\Users\person\Desktop\C#\New Text Document.txt")) 
     { 
      InputFile.WriteLine(textBox1.Text + "," + textBox2.Text + "," + textBox3.Text + "," + textBox4.Text); 
      MessageBox.Show("Data Saved!"); 

私はこのような他の多くの記事があるけど、私は私が

+0

ユーザーがテキストボックスにコンマを入力するとどうなりますか? – Enigmativity

+0

@Enigmativity @Enigmativity私はこのことを始めません.... – Justin

答えて

0

探している答えを得るように見えることはできませんはい。あなたは、アレイ内のすべての行を読まなければならないとコードを使用して次

var lines =File.ReadAllLines(@"C:\Users\person\Desktop\C#\New Text Document.txt"); 
      foreach (var line in lines) 
      { 
       var col = line.Split(','); 
       textBox1.Text = col[0]; 
        textBox2.Text = col[1]; 
       textBox3.Text = col[2]; 
       textBox4.Text = col[3]; 
      } 
+0

この例を使用すると、最後の行が読み込まれます。ファイル内のすべてではありません。 – Justin

+0

もちろん、別のテキストボックスにデータを挿入する必要があります各ループで! –

+0

@Justin - これがこのコードの仕組みだからです。サンプルコードでは1行しか書いていないことを示しているので、このコードは効果的に最後の行を取得します。 – Enigmativity

1

のようないいえ、あなたはIEnumerable<string>を返す、File.ReadLinesを使用することができます。

int i = 1; 
foreach (string line in File.ReadLines(path)) { 
    string[] columns = line.Split(','); 
    for (int c = 0; c < columns.Length; c++) { 
     ((TextBox)Controls["textBox" + i++]).Text = columns[c]; 
    } 
} 

私はあなたのように二行目のためにtextBox8にテキストボックスの名前の最初の行のためのtextBox4からtextBox1textBox5を持っている、とすることを前提としています。しかし、おそらくグリッドを使用するほうがよいでしょう。

Microsoft.VisualBasic.FileIOTextFieldParserも使用することを検討してください。あなたのためにすべてのCSV処理を行います。 Microsoft.VisualBasic.dllへの参照を追加する必要があります。

注:Microsoft.VisualBasic.dllの内容は、他の.NETライブラリと同様で、VBのようにC#でも同様に動作します。

関連する問題