好。 我在与下面的代码有点问题:
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;
}
在代码中后,用户会点击“运行”按钮,针对列表中的每个项目执行一些代码。
我在使用的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' "
我想我明白这个问题,但我有一个很难的工作吧。
在我看来就像你创建你的button1_Click方法一个新的OpenFileDialog对象,并存储在一个局部变量,FileDialog的那个对象的唯一参考。
然后,在你buttonRun_Click方法,它看起来像你想从你在前面的方法创建的对话框中获取文件名。 这不是你在做什么,虽然。 编译器把你的代码尝试读取FileDialog类的FileName属性,就像它是一个静态成员。 有代码中的其他问题,但是这是造成你提到的编译器错误的问题很可能是FileDialog.FileName问题。
你的意思是读你的第一种方法创建的OpenFileDialog实例的FileName属性,但对象只存储在一个局部变量。 您有第一种方法之外没有访问它。 但既然你也已经在文本框中存储的文件名,你可以阅读的文件名指出,文本框的,所以你不需要访问的OpenFileDialog对象。
FileDialog
是一个类名,你需要使用一个对象来访问FileName
属性,因此错误。 我推荐使用fileDialog.FileName
,但你已经扔掉你fileDialog
(注意是小写的“F”)时button1_Click
方法退出。
但是,您在保存文件名textBox1.Text
该方法退出之前,它应该仍然可用。 尝试使用:
StreamReader arrComputer = new StreamReader(textBox1.Text);
难道你不认为你需要使用textBox1.Text?
StreamReader arrComputer = new StreamReader(textBox1.Text);
尽量不要做这样的:
private void buttonRun_Click(object sender, EventArgs e) {
StreamReader arrComputer = new StreamReader(textBox1.Text);
}
当你确定你的FileOpen对话框,你存储你的表格上所选择的文件名(通过设置textBox1.Text),所以你最好不要使用该存储值,而不是指回到原来的FileOpen对话框。
是FileDialog
控件的名称,或控件的类型? 我猜测它的类型。 当您将一个文件对话框到你的窗口,你会得到一个名为的FileDialog FileDialog1。 尝试,让我知道。
在button1_Click
您定义的本地fileDialog
变量,它消失在事件处理程序的结束。
在buttonRun_Click
您使用的类的类方法FileDialog
。
看来你需要声明在表单级别(的button1_Click外)一个FileDialog的变量,并在这两个事件处理程序使用同一个变量。
当这样的手表为fileDialog
和FileDialog
拼写。
文章来源: An object reference is required for the non-static field, method, or property