在事件-C#.NET中声明公共字符串时出现问题

在事件-C#.NET中声明公共字符串时出现问题,c#,.net,C#,.net,我有一个事件,我想声明一个公共字符串,它表示我的openFileDialog中的文件路径。我想这样做,以便以另一种形式访问文件路径 以下是我如何努力做到这一点: private void confirmButton_Click(object sender, EventArgs e) { SaveFileDialog ofd = new SaveFileDialog(); if (ofd.ShowDialog() == DialogResult.OK)

我有一个事件,我想声明一个
公共字符串
,它表示我的
openFileDialog
中的
文件路径
。我想这样做,以便以另一种形式访问
文件路径

以下是我如何努力做到这一点:

private void confirmButton_Click(object sender, EventArgs e)
    {
        SaveFileDialog ofd = new SaveFileDialog();
        if (ofd.ShowDialog() == DialogResult.OK)
        {
            //DO STUFF WITH SELECTED FILE
        }
        public string fileName = ofd.FileName;
    }
当我试图将字符串声明为public时,会出现一系列语法错误,我还尝试将事件更改为public事件,但是这并不能解决问题


非常感谢您的帮助。

您不能在方法(或事件)中声明属性或字段

我猜你想要的是更像这样的东西

public string filename { get; set; }

private void confirmButton_Click(object sender, EventArgs e)
{
    SaveFileDialog ofd = new SaveFileDialog();
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        //DO STUFF WITH SELECTED FILE
    }
    filename = ofd.FileName;
}

原因是,您在方法体内声明的任何内容都只在该方法体内起作用。因此,标记为
public
的内容没有多大意义。通过将它从方法体中拉出并从那里简单地引用它,您可以做更多的事情。

您不能在方法(或事件)中声明属性或字段

我猜你想要的是更像这样的东西

public string filename { get; set; }

private void confirmButton_Click(object sender, EventArgs e)
{
    SaveFileDialog ofd = new SaveFileDialog();
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        //DO STUFF WITH SELECTED FILE
    }
    filename = ofd.FileName;
}

原因是,您在方法体内声明的任何内容都只在该方法体内起作用。因此,标记为
public
的内容没有多大意义。通过将它从方法体中拉出并从那里简单地引用它,您可以做更多的事情。

您将该字符串声明为非公共字符串。它在方法内部。尝试:

public string fileName;
private void confirmButton_Click(object sender, EventArgs e)
{
    SaveFileDialog ofd = new SaveFileDialog();
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        //DO STUFF WITH SELECTED FILE
        fileName = ofd.FileName;
    }

}

您正在声明该字符串不是公共的。它在方法内部。尝试:

public string fileName;
private void confirmButton_Click(object sender, EventArgs e)
{
    SaveFileDialog ofd = new SaveFileDialog();
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        //DO STUFF WITH SELECTED FILE
        fileName = ofd.FileName;
    }

}

谢谢,非常有用的答案。更深入一点:方法体中声明的所有标准变量只能在方法执行期间访问(只有少数例外),因此您的公共变量将在方法执行后被释放,不再存在。顺便说一句:去给他最好的答案。:)谢谢,非常有用的答案。更深入一点:方法体中声明的所有标准变量只能在方法执行期间访问(只有少数例外),因此您的公共变量将在方法执行后被释放,不再存在。顺便说一句:去给他最好的答案。:)