前提・実現したいこと
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#
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace math-aplication { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //★ public void button2_Click(object sender, EventArgs e) { ReadCsv(); } public static List<string[]> stArrayData = new List<string[]>(); static void ReadCsv() { void ReadCsv() { try { // csvファイルを開く System.IO.DirectoryInfo dirPath = new System.IO.DirectoryInfo(@""); System.IO.FileInfo[] files = dirPath.GetFiles("", System.IO.SearchOption.AllDirectories); // 指定フォルダからCSVを取得し、配列に格納する。 foreach (System.IO.FileInfo filePath in files) { using (var readCsv = new System.IO.StreamReader(filePath.FullName)) { //ヘッダを読み捨てる。 readCsv.ReadLine(); // ストリームの末尾まで繰り返す while (!readCsv.EndOfStream) { // ファイルから一行読み込む var line = readCsv.ReadLine(); //ここの部分で数字の配列なのでこのままだといけませんでした。 string[] record = line.Split(','); stArrayData.Add(record); } } } } finally { textBox1.Text = "読み取ってへんで!!"; }; } } public void button1_Click(object sender, EventArgs e) { double l = 0; for (int i = 0; i < B.Length; ++i) { l += record[i]; } this.Invoke(new MethodInvoker(() => textBox1.Text = Convert.ToString(l))); } } }
試したこと
★マークの部分で"record"として配列を宣言したのですがボタン1のほうでは反映されていませんでした。
初めての利用のため、質問内容がわかりにくいかもしれません。
ご助言いただけると幸いです。
よろしくお願いいたします。
まだ回答がついていません
会員登録して回答してみよう