gpt4 book ai didi

c# - 如何在wpf中延迟调用文本框的textchanged事件

转载 作者:行者123 更新时间:2023-11-30 19:38:04 26 4
gpt4 key购买 nike

我有继承自文本框的自定义控件。

我想延迟调用 textchanged 事件。

 Observable.FromEventPattern<TextChangedEventHandler, TextChangedEventArgs>(
handler => this.TextChanged += handler,
handler => this.TextChanged -= handler
).Throttle(TimeSpan.FromMilliseconds(600))
.Where(e =>
{
var control= e.Sender as TextBox;
return control!= null && !string.IsNullOrEmpty(control.Text);
})

.Subscribe(x => Control_TextChanged(x.Sender, x.EventArgs));

问题是它给出错误提示,无法访问 Text 属性,因为当前线程没有访问权限。

有人可以请教吗?

谢谢,维沙尔

最佳答案

您可以在 UI 线程上观察:

Observable.FromEventPattern<TextChangedEventHandler, TextChangedEventArgs>(
handler => this.TextChanged += handler,
handler => this.TextChanged -= handler)
.ObserveOn(DispatcherScheduler.Current)
.Throttle(TimeSpan.FromMilliseconds(600))
.Where(e =>
{
var control= e.Sender as TextBox;
return control!= null && !string.IsNullOrEmpty(control.Text);
})
.Subscribe(x => Control_TextChanged(x.Sender, x.EventArgs));

注意 DispatcherScheduler.Current 的使用它在 System.Reactive.Windows.Threading Rx-WPF 中的命名空间NuGet 包。

关于c# - 如何在wpf中延迟调用文本框的textchanged事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35169500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com