确定。我遇到了以下代码问题:
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' "
我想我理解这个问题,但我很难解决它。
答案 0 :(得分:4)
在我看来,就像你在button1_Click方法中创建一个新的OpenFileDialog对象,并在该局部变量fileDialog中存储对该对象的唯一引用。
然后,在你的buttonRun_Click方法中,看起来你想从你在前一个方法中创建的对话框中获取文件名。但这不是你正在做的事情。编译器将您的代码解释为尝试读取FileDialog类的FileName属性,就像它是静态成员一样。您的代码中还有其他问题,但导致您引用的编译器错误的问题可能是FileDialog.FileName问题。
您的意思是从您在第一个方法中创建的OpenFileDialog实例中读取FileName属性,但该对象仅存储在本地变量中。在第一种方法之外,您无权访问它。但是,由于您还在文本框中存储了文件名,因此您可以从该文本框中读取文件名,因此您无需访问OpenFileDialog对象。
答案 1 :(得分:2)
你认为你不需要使用textBox1.Text吗?
StreamReader arrComputer = new StreamReader(textBox1.Text);
答案 2 :(得分:2)
FileDialog
是一个类名,您需要使用一个对象来访问FileName
属性,因此会出错。我建议您使用fileDialog.FileName
,但是当fileDialog
方法退出时,您已经抛弃了button1_Click
(注意小写的“f”)。
但是,在退出该方法之前,您已将文件名保存在textBox1.Text
中,并且它仍然可用。尝试使用:
StreamReader arrComputer = new StreamReader(textBox1.Text);
答案 3 :(得分:1)
尝试这样做:
private void buttonRun_Click(object sender, EventArgs e) {
StreamReader arrComputer = new StreamReader(textBox1.Text);
}
当您确定FileOpen对话框时,您将在窗体上存储所选的文件名(通过设置textBox1.Text),因此最好使用此存储的值而不是返回原始的FileOpen对话框。
答案 4 :(得分:0)
FileDialog
是您的控件的名称,还是控件的类型?我猜这是类型。将文件对话框拖到窗口中时,会得到一个名为FileDialog1的FileDialog。试试看,让我知道。
答案 5 :(得分:0)
在button1_Click
中,您定义了一个本地fileDialog
变量,该变量在事件处理程序的末尾消失。
在buttonRun_Click
中,您在班级FileDialog
上使用了一种类方法。
似乎你需要在表单级别(在button1_Click之外)声明一个fileDialog变量,并在两个事件处理程序中使用相同的变量。
执行此观察时,fileDialog
和FileDialog
拼写。