我想在TextChanged
事件中调用一个方法,只要事件在一秒内没有再次触发。
如何在WPF
中完成此操作(可能使用DispatcherTimer
)?
我目前使用此代码但未在MyAction()
内调用Method
:
bool textchanged = false;
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
textchanged = true;
DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += (o, s) => { Method(); };
dispatcherTimer.Interval = TimeSpan.FromSeconds(1);
dispatcherTimer.Start();
}
void Method()
{
if (!textchanged) //here always false
{
//never goes here
MyAction();
}
//always goes here
}
答案 0 :(得分:0)
将您的代码更改为以下内容:
DispatcherTimer dispatcherTimer = new DispatcherTimer();
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
if (dispatcherTimer.IsEnabled)
{
dispatcherTimer.Stop();
}
dispatcherTimer.Start();
}
void Method()
{
dispatcherTimer.Stop();
MyAction();
}
并在构造函数中的InitializeComponent();
行之后直接添加:
dispatcherTimer.Tick += (o, s) => { Method(); };
dispatcherTimer.Interval = TimeSpan.FromSeconds(1);