好的。我在下面的代码中遇到了问题:
StreamReader arrComputer = new StreamReader(FileDialog.FileName);
我的第一个问题已经回答了,现在我的第二个问题集中在这段代码的尾部。
我正在读取一个文本文件StreamReader
,用户使用OpenFileDialog
通过按钮事件选择该文件
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.InitialDirectory = @"C:\";
fileDialog.Filter = "Text|*.txt|All|*.*";
if (fileDialog.ShowDialog() == DialogResult.OK) ;
textBox1.Text = fileDialog.FileName;
buttonRun.Enabled = true;
}
在后面的代码中,用户将单击"Run“按钮,对列表中的每一项执行一些代码。
我在使用StreamReader解析列表时遇到了问题,代码如下:
private void buttonRun_Click(object sender, EventArgs e)
{
StreamReader arrComputer = new StreamReader(FileDialog.FileName);
}
这是我在编码时收到的错误:
"An object reference is required for the non-static field, method, or property 'System.Windows.Forms.FileDialog.FileName.get' "
我想我理解这个问题,但我很难解决这个问题。
发布于 2008-11-10 14:00:41
在我看来,您在button1_Click方法中创建了一个新的OpenFileDialog对象,并将对该对象的唯一引用存储在一个局部变量fileDialog中。
然后,在您的buttonRun_Click方法中,看起来您想要从您在前面的方法中创建的对话框中获取文件名。不过,这不是你要做的。编译器将您的代码解释为试图读取FileDialog类的FileName属性,就好像它是静态成员一样。您的代码中还有其他问题,但导致您提到的编译器错误的问题很可能是FileDialog.FileName问题。
您打算从在第一个方法中创建的OpenFileDialog实例中读取FileName属性,但该对象仅存储在局部变量中。除了第一个方法之外,您不能访问它。但是,由于还将文件名存储在文本框中,因此可以从文本框中读取文件名,因此不需要访问OpenFileDialog对象。
发布于 2008-11-10 13:57:34
你不认为你需要使用textBox1.Text吗?
StreamReader arrComputer = new StreamReader(textBox1.Text);
发布于 2008-11-10 14:00:44
FileDialog
是一个类名,您需要使用一个对象来访问FileName
属性,因此出现了这个错误。我推荐使用fileDialog.FileName
,但是当button1_Click
方法退出时,您已经丢弃了fileDialog
(注意小写的"f")。
但是,在该方法退出之前,您将该文件名保存在textBox1.Text
中,并且该文件名应该仍然可用。试着使用它:
StreamReader arrComputer = new StreamReader(textBox1.Text);
https://stackoverflow.com/questions/279306
复制相似问题