前提・実現したいこと
c#を勉強し始めて1か月もたっていない超初心者です。
現在、visual studio2019でWindowsフォームアプリケーションを用いてアプリを作成しています。アプリは、ボタン2を押すとcsvデータを読み取り配列に格納する。ボタン1を押すとその配列の要素を計算してテキストボックスに表示するというものです。
https://teratail.com/questions/38442
こちらで載っている質問を参考に作成していたのですが、
数字であるcsvデータをカンマ区切りで分割して配列に格納する方法とその配列をボタン1のコードでも使えるようにする方法がわかりません。
c#にグローバル変数がないことは色々調べていくうちにわかりました。
いかにコードを載せさせていただきます。
ご助言いただけると幸いです。
よろしくお願いいたします。
読み込みたいcsvデータ例
13
14
34
45
45
70
46
113
133
上記のように数値のみがデータとして出てくるものです。
これらのデータを読み込むことで配列一つ一つの要素を用いて計算できる。
c#
1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Text; 8using System.Threading.Tasks; 9using System.Windows.Forms; 10 11namespace math-aplication 12{ 13 public partial class Form1 : Form 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 19 20 } 21 22 //★ 23 24public void button2_Click(object sender, EventArgs e) 25 { 26 ReadCsv(); 27 } 28 29 public static List<string[]> stArrayData = new List<string[]>(); 30 static void ReadCsv() 31 { 32 33 void ReadCsv() 34 { 35 try 36 { 37 // csvファイルを開く 38 System.IO.DirectoryInfo dirPath = 39 new System.IO.DirectoryInfo(@""); 40 System.IO.FileInfo[] files = 41 dirPath.GetFiles("", System.IO.SearchOption.AllDirectories); 42 43 // 指定フォルダからCSVを取得し、配列に格納する。 44 foreach (System.IO.FileInfo filePath in files) 45 { 46 using (var readCsv = new System.IO.StreamReader(filePath.FullName)) 47 { 48 //ヘッダを読み捨てる。 49 readCsv.ReadLine(); 50 // ストリームの末尾まで繰り返す 51 while (!readCsv.EndOfStream) 52 { 53 // ファイルから一行読み込む 54 var line = readCsv.ReadLine(); 55 //ここの部分で数字の配列なのでこのままだといけませんでした。 56 string[] record = line.Split(','); 57 stArrayData.Add(record); 58 } 59 } 60 } 61 } 62 finally 63 { 64 textBox1.Text = "読み取ってへんで!!"; 65 }; 66 67 } 68 69 } 70 71public void button1_Click(object sender, EventArgs e) 72 { 73 74 75 76 double l = 0; 77 78 for (int i = 0; i < B.Length; ++i) 79 { 80 l += record[i]; 81 } 82 83 84 85 this.Invoke(new MethodInvoker(() => textBox1.Text = Convert.ToString(l))); 86 } 87 88 89 } 90 91 92}
試したこと
★マークの部分で"record"として配列を宣言したのですがボタン1のほうでは反映されていませんでした。
初めての利用のため、質問内容がわかりにくいかもしれません。
ご助言いただけると幸いです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー