【发布时间】:2020-11-30 03:30:37
【问题描述】:
我在运行以下代码的 C# Windows 窗体应用程序上有一个按钮:
private void btnAddDataToCSV_Click(object sender, EventArgs e)
{
string path = "D:\MyCsvFile.csv";
Process.Start(path);
}
基本上,用户需要能够对 CSV 文件进行更改。用户最愿意在 Microsoft Excel 中进行这些更改。我从一个有多年使用 MS Office 产品和 C# 经验的人那里找到了上面的代码。这家伙解释说,下面的代码可以工作,但比使用上面显示的“Process.Start()”更容易出错。
string path = "D:\MyCsvFile.csv";
var ExcelApp = new Excel.Application();
ExcelApp.Workbooks.OpenText(path, Comma: true);
ExcelApp.Visible = true;
这个人解释说“Process.Start()”之所以有效,是因为 Windows 设置为使用 Excel 作为打开 CSV 文件的默认程序。
无论如何,当用户单击上面的按钮 (btnAddDataToCSV) 时,我需要禁用我的 C# 表单(所有按钮变灰),直到用户关闭显示 CSV 文件的 Excel 工作簿。潜在地,我可能需要 C# 程序在用户关闭 Excel 后立即读取 CSV 文件。
我该怎么做?
我假设...我需要执行类似...“禁用 C# 表单...然后等待 Excel 关闭事件...然后一旦 excel 关闭事件发生...启用 C# 表单并读取 CSV 文件。 "
以下是我用于读取 CSV 文件的代码:
string path = "D:\MyCsvFile.csv";
var reader = new StreamReader(File.OpenRead(path));
List<string> listA = new List<string>();
List<string> listB = new List<string>();
List<string> listC = new List<string>();
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
listA.Add(values[0]);
listB.Add(values[1]);
listC.Add(values[2]);
}
【问题讨论】: