如何使用 streamwriter 将 TextBox 文本保存到文本文件

How to save TextBox text to text file using streamwriter

首先我不得不说我是 c# 编程的新手。我的问题是,我有一个 window,里面有一个文本框和一个按钮,我想要完成的是将一些文本写入文本框,然后单击按钮,我想将该文本保存到ukony.txt 文件。但是使用下面的代码,点击按钮后没有任何反应。

public partial class Window1 : Window {
    public Window1() {
        InitializeComponent();

    }

    private void button_Click(object sender, RoutedEventArgs e) 
        {
        string writerfile = @"D:\Games\ukony.txt";
        Window1 a = new Window1();
        using (StreamWriter writer = new StreamWriter(writerfile)) 
            {
            writer.WriteLine(a.textBlock.Text);
            writer.WriteLine(a.textBlock1.Text);
            }
        }
    }

不要使用 window 的新实例。使用当前的。要访问当前实例的文本块,您应该使用 this 关键字:

private void button_Click(object sender, RoutedEventArgs e) 
{
    string writerfile = @"D:\Games\ukony.txt";

    using (StreamWriter writer = new StreamWriter(writerfile)) 
    {
        writer.WriteLine(this.textBlock.Text);
        writer.WriteLine(this.textBlock1.Text);
    }
}

问题详情:这一行:

Window1 a = new Window1();

您创建了一个带有空控件的新 Window。这些与您在屏幕上看到的以及您可能输入过内容的内容不同。

不工作的原因是 Window1 class 的新创建实例。这与您实际看到的 UI 完全不同。所以不需要在那个地方创建实例,直接使用textBox名称访问text

private void button_Click(object sender, RoutedEventArgs e) 
{
    string writerfile = @"D:\Games\ukony.txt";
    using (StreamWriter writer = new StreamWriter(writerfile)) 
    {
        writer.WriteLine(textBlock.Text);
        writer.WriteLine(textBlock1.Text);
    }
}

为什么要使用 StreamWriter?我认为这样更容易:

private void button_Click(object sender, RoutedEventArgs e) 
{
    string writerfile = @"D:\Games\ukony.txt";

    System.IO.File.WriteAllText(writerFile, this.textBlock.Text);
    System.IO.File.AppendAllText(writerFile, this.textBlock1.Text);
}