【发布时间】:2019-10-22 23:29:56
【问题描述】:
我正在开发一个带有 winforms 的项目。我想从现有的 .txt 文件中读取,但没有硬编码。这意味着我想允许用户提供文件的路径作为输入。我尝试了以下代码:
private void pathSearch_TextChanged(object sender, EventArgs e)
{
string path = "";
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
path = ofd.FileName;
pathSearch.Text = File.ReadAllText(path);
}
string[] lines = File.ReadAllLines(path);
if (!File.Exists(path))
{
// Create a file to write to.
string[] createText = { "Hello", "And", "Welcome" };
File.WriteAllLines(path, createText);
}
string[] values;
for (int i = 0; i < lines.Length; i++)
{
values = lines[i].ToString().Split('|');
string[] row = new string[values.Length];
for (int j = 0; j < values.Length; j++)
{
row[j] = values[j].Trim();
}
table.Rows.Add(row);
}
}
您可以查看screenshot1 和screenshot2 以了解其工作原理。我想在文本字段中输入路径,但它给了我一个 ArgumentNullException。输入我要导入的路径后,使用按钮查看该表上的数据。 P.s 我不确定检查路径的存在是否可以这样工作。
编辑
在 cmets 之后,我编辑了我的代码,我得到了一些有用的东西。但是,为了导入文件,我必须选择它 2 次,它在表中写入相同的行 twice。我该如何解决?
【问题讨论】:
-
这不是控制台应用程序;
string path = Console.ReadLine();无济于事。使用Button.Click事件,而不是TextBox.TextChanged事件。您需要pathSearch.Text属性值。使用OpenFileDialog类创建标准打开对话框来选择文件。File.Exists(path) =>这个条件将在 OpenFileDialog 中得到验证。但是,如果您自己检查,请在File.ReadAllLines(path);之前进行,否则它毫无用处。等 -
Console.ReadLine()从控制台窗口读取输入。您需要改用TextBox中的文本。或者更好的是,实现OpenFileDialog -
你在
TextChanged方法中编辑pathsearch的Text属性,会再次触发这个事件。