2017-06-06 168 views
0

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://stackoverflow.com/questions/7306214/append-lines-toa-a-文件使用的一個流寫器) –

回答

0

不工作的原因是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); 
    } 
} 
0

不使用窗口的新實例。使用當前的。要訪問當前實例的的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(); 

創建空控件的新窗口。這些與您在屏幕上看到的內容不一樣,您可能在其中輸入了某些內容。

0

你爲什麼要使用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); 
} 
相關問題