我的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);
}
答案 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
}