- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Rx 为 WPF 中的文本框创建某种“ProbablyDoneTyping”。
我通过像这样将来自 GotFocus 的 Observable 与来自 TextChanged 的 Observable 连接起来,让一切正常工作
var gotFocus = Observable.FromEventPattern<RoutedEventArgs>(textBox, "GotFocus");
var delayedLostFocus = Observable.FromEventPattern<RoutedEventArgs>(textBox, "LostFocus")
.Delay(TimeSpan.FromMilliseconds(850));
var throttledTextChanged = Observable.FromEventPattern<TextChangedEventArgs>(textBox, "TextChanged")
.Select(pattern => textBox.Text).Throttle(TimeSpan.FromMilliseconds(750)).DistinctUntilChanged();
var immediately = Observable.Empty<Unit>();
var probablyDoneTyping = gotFocus.Join(throttledTextChanged, _ => delayedLostFocus, _ => immediately, (_, text) => text);
probablyDoneTyping.ObserveOn(SynchronizationContext.Current).Subscribe(text => Title = text);
我在 LostFocus 上引入了延迟,这样我就可以离开 TextBox 并且 probablyDoneTyping 仍然会触发。
但这给了我一个 System.OperationCanceledException,每次我离开文本框时,它都会在延迟中产生。
异常的堆栈跟踪是
System.Reactive.Linq.dll!System.Reactive.Linq.ObservableImpl.Delay<System.Reactive.EventPattern<System.Windows.RoutedEventArgs>>.LongRunningImpl.DrainQueue Normal
mscorlib.dll!System.Threading.CancellationToken.ThrowOperationCanceledException()
mscorlib.dll!System.Threading.SemaphoreSlim.Wait(int millisecondsTimeout, System.Threading.CancellationToken cancellationToken)
mscorlib.dll!System.Threading.SemaphoreSlim.Wait(System.Threading.CancellationToken cancellationToken)
System.Reactive.Linq.dll!System.Reactive.Linq.ObservableImpl.Delay<System.Reactive.EventPattern<System.Windows.RoutedEventArgs>>.LongRunningImpl.DrainQueue(System.Reactive.Disposables.ICancelable cancel)
System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.ScheduleLongRunning.AnonymousMethod__72(System.Action<System.Reactive.Disposables.ICancelable> a, System.Reactive.Disposables.ICancelable c)
System.Reactive.Core.dll!System.Reactive.Concurrency.DefaultScheduler.LongRunning.ScheduleLongRunning<System.Action<System.Reactive.Disposables.ICancelable>>.AnonymousMethod__b(object arg)
System.Reactive.PlatformServices.dll!System.Reactive.Concurrency.ConcurrencyAbstractionLayerImpl.StartThread.AnonymousMethod__4()
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(object state)
mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart()
异常不会影响我的应用程序,但它会被抛出,如果我因公共(public)语言运行时异常而中断,每次我离开文本框时应用程序都会停止。我不想要这个。
为什么会抛出异常,我该如何摆脱它?
最佳答案
启用Just My Code或禁用 breaking on first-chance exceptions (虽然我不推荐后者)。
关于c# - 使用 Rx 将节流的 TextBox.TextChanged 与 TextBox.GotFocus/(delayed)LostFocus 结合起来会抛出 System.OperationCanceledException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25523014/
XAML C#不是WEB页面是窗口 点击按钮我: 需要捕获最后一个控件的名称OnFocus 强制控件发生 LostFocus 事件。 最佳答案 //问题:单击 btns 不会在最后输入的元素控件上强制
我有一个简单的任务要完成,或者至少在外观上...... 我想处理一个窗口当前是否是 Windows 环境中当前选定窗口的事实。 我以为我只需要处理我的窗口的两个事件 LostFocus 和 GotFo
在以下简单的 WPF 应用程序中,TextBox设置为在该控件失去焦点时更新属性,如下所示 Test public MainWindow() {
我有一个包含许多 TextBox 的网格,我想调用 NotifyPropertyChanged() 方法来更新一些其他控件,每次这些 TextBox 之一更改值 = 失去焦点(我不想将Property
我在 Silverlight 和 WPF 中有一个应用程序。该错误只发生在 Silverlight 中,但在 WPF 中使用了相同的代码。 在我的应用程序中,有一个 RibbonBar,有几个 Rib
我在一个表单上有一堆控件(文本框和组合框),带有 toolstripcontainer 和 toolstripbuttons 用于保存、取消等以进行编辑。我们正在使用 .Net 3.5 SP1 在 c
引用this MSDN page (或有关此事的任何相关页面),它指出: When you change the focus by using the keyboard, focus events o
我已经创建了一个 WinForms 用户控件。我阅读了一些关于 GotFocus() 和 LostFocus() 事件的地方,但我的用户控件没有在“属性”窗口的“事件”部分提供这些事件。 我什至尝试输
我有一个包含七个文本框的表单,所有文本框都描述了二手车的不同属性。在共享LostFocus我的文本框事件,我需要一个 case 语句来确定特定的 TextBox那失去了焦点。然后我需要执行不同的各种任
我有一个 GUI 应用程序,它使用 InputVerifier 在产生焦点之前检查文本字段的内容。这都是很正常的。然而,昨天发现了一个问题——它似乎是一个错误,但我在任何地方都找不到任何提及。在我将此
我需要在文本框失去焦点时触发服务器端的代码。 我知道有 onblur 客户端事件,并且没有 LostFocus 事件,那么当我的 TextBox 失去焦点时如何导致回发发生? 更新: 我找到了blog
我的情况是,在打开应用程序时,我从文件中读取了大量数据(使用 XMLSerializer )并将其放入 ObservableCollection 中.使用绑定(bind),我向用户呈现数据。当他们更改
我这里的场景非常简单。请查看布局: 和代码隐藏: private void _datePicker_OnLostFocu
这是我的xaml结构 => 这个结构可以多循环。如: 在.cs文件中,我定义事件失去焦点如下 private void text_LostFocus(o
我需要从一个非常大的 xaml 文件中删除所有丢失焦点事件。我计划通过用空字符串查找和替换 (ctrl + H) 所有丢失的焦点事件来做到这一点,例如 替换 LostFocus="txtSampleL
我有一个可编辑的组合框,只要您单击它,就会调用 lostFocus 方法。当它真正失去焦点时它也会被调用。 单击组合框时导致 LostFocus 运行的原因是什么?
目前我绑定(bind)到我的TextBox即: Text="{Binding DocValue, Mode=TwoWay, ValidatesOnDataError
我正在尝试针对对象验证 WPF 表单。当我在文本框中键入某些内容时会触发验证失去焦点回到文本框然后删除我写的任何内容。但是,如果我只是加载 WPF 应用程序并关闭文本框而不从文本框中写入和删除任何内容
我正在尝试创建一种样式,使我的所有 DataGrids 在失去焦点时都选择第 -1 行。我正在做:
为什么我会收到此错误消息?我正在使用事件 setter ! 编辑 我没有使用内联样式。它位于资源中,即: 最佳答案 参见this questio
我是一名优秀的程序员,十分优秀!