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

问题描述:

Firstoff我必须说我是新来的C#编程。我的问题是,我有一个窗口,里面有一个文本框和一个按钮,我试图完成的是将一些文本写入文本框,然后在按钮上单击我想将该文本保存到ukony.txt文件中。但使用下面的代码,点击按钮后没有任何反应。如何使用Streamwriter将TextBox文本保存到文本文件

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); 
      } 
     } 
    } 
+3

由于您使用空的“TextBox”制作“新”Windows,因此不会生成'Window'的新实例。使用'this','Window'的当前实例(或当前窗口),如下所示:'writer.WriteLine(this.textBlock.Text);' – Nino

+0

Cases:01)Window1初始化为按钮单击事件,其中文本框文本将总是空的,02)事件可能不会被绑定 –

+0

[使用StreamWriter将行添加到文件](https://*.com/questions/7306214/append-lines-toa-a-文件使用的一个流写器) –

不工作的原因是Window1类的新创建的实例。这与您实际看到的UI完全不同。所以,你不必在那个地方创建一个实例,直接使用文本框名称访问

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); 
    } 
} 

不使用窗口的新实例。使用当前的。要访问当前实例的的TextBlocks你应该使用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(); 

创建空控件的新窗口。这些与您在屏幕上看到的内容不一样,您可能在其中输入了某些内容。

你为什么要使用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); 
}