我无法找到解决此问题的方法:
我编写了一个程序,它读取目录中的所有文件并将它们放在一个列表框中。 当用户从列表框中选择文件时,程序将读取所选文件并打印出一些信息......
问题是,在第一次选择之后我的程序“停止工作”。他没有崩溃,但当我尝试选择另一个文件时,他什么也没做。
我发现问题在于:
private String porocilo(String s)
{
file = "/path to file/";
TextReader tr = new StreamReader(file); //<- problem here
//...
tr.close();
return someinfo;
}
//..
//Call function:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label1.Text = porocilo(listBox1.SelectedItems[0].ToString());
}
删除(问题)行后,程序通常选择文件,但没有这个我无法读取文件,我的程序也没有做任何事情。
有人可以告诉我哪里错了吗?
Br,Wolfy
答案 0 :(得分:2)
如果您发布的代码实际上是您正在使用的代码(加上缺少的分号),那么您没有看到任何事情发生的原因是因为您的代码保持打开并读取相同的文件,而不是用户选择的文件。您将file
设置为常量路径/文件名并从中读取,并且您没有使用s
参数。
答案 1 :(得分:0)
看起来你的porocilo方法中有一条硬编码路径。也就是说,新的StreamReader正在考虑它的参数,文件而不是s。 所以它只会打开一个文件,而不是你选择的文件。
private String porocilo(String s)
{
//file = "/path to/file" // not sure what this is...???
TextReader tr = new StreamReader(s); //<- fix here
//...
tr.close();
return someinfo;
}
答案 2 :(得分:0)
在列表框中选择索引更改方法,您需要分配所选值,如下所示
//Call function:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label1.Text = porocilo(listBox1.SelectedItem.Text);
}
同时检查你的“porocilo”功能它使用参数corectly