如何在单击按钮时读取csv文件中的下一行
How to read next line in csv file on button click
我有一个带有两个按钮和一个文本框的 windows 表单。我的开始按钮读取 csv 文件中的第一行并将我想要的数据输出到文本框中:
private: System::Void StartBtn_Click(System::Object^ sender, System::EventArgs^ e)
{
String^ fileName = "same_para_diff_uprn1.csv";
StreamReader^ din = File::OpenText(fileName);
String^ delimStr = ",";
array<Char>^ delimiter = delimStr->ToCharArray( );
array<String^>^ words;
String^ str = din->ReadLine();
words = str->Split( delimiter );
textBox1->Text += gcnew String (words[10]);
textBox1->Text += gcnew String ("\r\n");
textBox1->Text += gcnew String (words[11]);
textBox1->Text += gcnew String ("\r\n");
textBox1->Text += gcnew String (words[12]);
textBox1->Text += gcnew String ("\r\n");
textBox1->Text += gcnew String (words[13]);
然后我的 'next button' 我希望它清除文本框,并显示下一行数据,如上所示。然后每次单击下一个按钮时,文本框都会被清除并显示 csv 文件的下一行。直到我到达文件的末尾。我该如何处理?
TIA
您的问题是您的 button_click()
函数在完成后忘记了 StreamReader
对象和所有其他变量。
您需要使一些变量(至少 din
)独立于函数,将它们定义为 WinForms 对象的成员。每当您调用该函数时,您都可以阅读下一行。并且您需要添加检查 din
是否为 nullptr(在第一次调用时会如此),然后加载文件,否则就使用它:
StreamReader^ din;
private: System::Void StartBtn_Click(System::Object^ sender, System::EventArgs^ e)
{
String^ fileName = "same_para_diff_uprn1.csv";
if (!din) // or: if (din == nullptr)
din = File::OpenText(fileName);
String^ delimStr = ",";
...
我有一个带有两个按钮和一个文本框的 windows 表单。我的开始按钮读取 csv 文件中的第一行并将我想要的数据输出到文本框中:
private: System::Void StartBtn_Click(System::Object^ sender, System::EventArgs^ e)
{
String^ fileName = "same_para_diff_uprn1.csv";
StreamReader^ din = File::OpenText(fileName);
String^ delimStr = ",";
array<Char>^ delimiter = delimStr->ToCharArray( );
array<String^>^ words;
String^ str = din->ReadLine();
words = str->Split( delimiter );
textBox1->Text += gcnew String (words[10]);
textBox1->Text += gcnew String ("\r\n");
textBox1->Text += gcnew String (words[11]);
textBox1->Text += gcnew String ("\r\n");
textBox1->Text += gcnew String (words[12]);
textBox1->Text += gcnew String ("\r\n");
textBox1->Text += gcnew String (words[13]);
然后我的 'next button' 我希望它清除文本框,并显示下一行数据,如上所示。然后每次单击下一个按钮时,文本框都会被清除并显示 csv 文件的下一行。直到我到达文件的末尾。我该如何处理?
TIA
您的问题是您的 button_click()
函数在完成后忘记了 StreamReader
对象和所有其他变量。
您需要使一些变量(至少 din
)独立于函数,将它们定义为 WinForms 对象的成员。每当您调用该函数时,您都可以阅读下一行。并且您需要添加检查 din
是否为 nullptr(在第一次调用时会如此),然后加载文件,否则就使用它:
StreamReader^ din;
private: System::Void StartBtn_Click(System::Object^ sender, System::EventArgs^ e)
{
String^ fileName = "same_para_diff_uprn1.csv";
if (!din) // or: if (din == nullptr)
din = File::OpenText(fileName);
String^ delimStr = ",";
...