繁体   English   中英

C# Streamwriter 通过按钮启用

[英]C# Streamwriter enabling by button

我想创建一个应用程序,我可以在其中创建文件,通过单击按钮向其中写入内容,然后通过单击另一个按钮关闭该文件。 问题是,当我在一个按钮内声明 Streamwrtier 对象时,我无法从第二个按钮内调用文件关闭方法,因为我遇到了这样的错误:当前上下文中不存在名称“文件” 当我在按钮方法之外启动 Streamwriter 时,问题消失了,但是在我单击按钮之前正在创建文件。 你知道我怎样才能克服这个问题吗?

    public void button1_Click(object sender, EventArgs e)
    {
        button1.Visible = false;
        button2.Visible = true;
        StreamWriter file = new StreamWriter("test.txt");
        file.WriteLine(value.ToString());

    }
    private void button2_Click(object sender, EventArgs e)
    {
        button1.Visible = true;
        button2.Visible = false;
        file.Close();
    }

这是基本的修复:

private StreamWriter file = null;
public void button1_Click(object sender, EventArgs e)
{
    button1.Visible = false;
    button2.Visible = true;
    if (file == null)
        file = new StreamWriter("test.txt");
    file.WriteLine(value.ToString());
}
private void button2_Click(object sender, EventArgs e)
{
    button1.Visible = true;
    button2.Visible = false;
    if (file is object) 
        file.Close();
}

但实际上,在大多数情况下保持文件打开是一种糟糕的做法。 你通常想要更像这样的东西,它一次性处理打开和关闭必要的流,并且只在最短的必要持续时间内保持文件打开:

public void button1_Click(object sender, EventArgs e)
{
    File.AppendAllText("test.txt", value.ToString());
}

由于我们总是立即关闭文件,因此根本不需要第二个按钮。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM