WPF TextChanged事件

时间:2014-02-14 18:56:15

标签: c# wpf textchanged

我的WPF应用程序中有一个TextBox和一个Button。当用户单击按钮时,它将文本框的文本值保存到txt文件中。 因此,基本上当用户在TextBox中插入内容时,会触发TextChaned事件。问题是,例如,如果用户键入“Daniel”并单击按钮,则还会保存用户输入的每个组合。我怎么能摆脱这个?

文本文件包含:

D
Da
Dan
Dani
Danie
Daniel

如何只保存最后一个字符串(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);
    }

3 个答案:

答案 0 :(得分:2)

您希望按钮的Click事件处理此事件,而不是TextBox的TextChanged事件。

像这样:

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

答案 1 :(得分: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;
}

答案 2 :(得分:0)

您根本不需要TextChanged事件。

XAML

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

CS

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

   //code to save to text file

}