2014-02-14 100 views
0

我在我的WPF應用程序中有一個TextBox和一個Button。當用戶點擊按鈕時,它將文本框的文本值保存到一個txt文件中。 所以,基本上當用戶在TextBox中插入某些內容時,觸發TextChaned事件。例如,如果用戶輸入「Daniel」並單擊該按鈕,則用戶輸入的每個組合都將被保存。我怎樣才能擺脫這一點?WPF TextChanged事件

文本文件包含:

D 
Da 
Dan 
Dani 
Danie 
Daniel 

我怎麼只能保存最後一個字符串(丹尼爾),或是否有任何其他事件處理我的問題? 順便說一句,這實際上是一個列表,我正在使用Add方法。

代碼,要求:

// Button, just ignore all the crap inside 
    private void saveChangesButton_Click(object sender, RoutedEventArgs e) 
    { 
     System.IO.File.WriteAllLines(@System.IO.File.ReadAllText(@System.IO.Directory.GetCurrentDirectory() + "/dir.txt") + "/commandline.txt", checkedValues); 
    } 
    // List 
    private List<String> checkedValues = new List<String>(); 
    // TextChanged 
    private void sWidth_TextChanged(object sender, TextChangedEventArgs e) 
    { 
     checkedValues.Add(sWidth.Text); 
    } 
+0

爲什麼你使用'TextChanged'事件?如果你只需要保存Textbox.Text,使用'Button_Click'事件。 –

+0

@ŁukaszMotyczka如果TextBox的默認Text屬性不爲空,該怎麼辦?我也想保存它。 – user2729661

+0

你可以發佈textchanged和按鈕點擊的代碼嗎? –

回答

2

我會嘗試這樣的事情:

// List 
private List<String> checkedValues = new List<String>(); 

public int nTextboxChanged = 0; 

// Button, just ignore all the crap inside 
private void saveChangesButton_Click(object sender, RoutedEventArgs e) 
{ 
    if(nTextboxChanged == 1) 
    {  
     checkedValues.Add(sWidth.Text); 
     System.IO.File.WriteAllLines(@System.IO.File.ReadAllText(@System.IO.Directory.GetCurrentDirectory() + "/dir.txt") + "/commandline.txt", checkedValues); 
    } 
} 

// TextChanged 
private void sWidth_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    nTextboxChanged = 1; 
} 
1

您希望這通過您的按鈕的Click事件進行處理,而不是文本框的TextChanged事件。

像這樣:

private void saveButton_Click(object sender, RoutedEventArgs e) 
{ 
     using (var streamWriter = new StreamWriter("yourtextfile.txt", true)) 
     { 
      streamWriter.WriteLine(textBox.Text); 
     } 
} 
0

你不需要TextChanged事件都沒有。

XAML

<TextBox Name="textToSave" /> 
<Button Click="saveToTextFile" /> 

CS

private void saveToTextFile(...){ 
    string text = textToSave.Text; 

    //code to save to text file 

}