vb.net - VB.NET 中的 TextChanged 事件
问题描述
我有两个基本的文本框,比如说 A 和 B。我想输入一个文本框以清除另一个文本框的任何输入。例如,在 A 中键入 123。现在在 B 中键入 456。B 应包含 456,A 应为空。但是,我在 B 中收到 56,而 A 为空。似乎 B 的第一个输入用于触发 TextChanged 并且只存储剩余的输入。我怎样才能将第一个输入传递给文本框?
这是我的 VB.NET 代码:
Public Sub A_TextChanged(sender As Object, e As TextChangedEventArgs) Handles A.TextChanged
B.Text = ""
End Sub
Public Sub B_TextChanged(sender As Object, e As TextChangedEventArgs) Handles B.TextChanged
A.Text = ""
End Sub
解决方案
每当用户或以编程方式更改文本时,都会发生该TextChanged
事件。
在您的情况下,您的事件处理A_TextChanged
程序正在更改 B 的文本,因此B_TextChanged
称为 ...</p>
添加一些Debug.WriteLine
语句可能会帮助您了解正在发生的事情:当您在 TextBox 中键入内容时,很难使用调试器单步执行。
要解决此问题,请使用布尔标志,以便在从某个事件处理程序调用时不会修改另一个文本框。例如(即开即用且未经测试):
Private UpdatingTextBox As Boolean
Public Sub A_TextChanged(sender As Object, e As TextChangedEventArgs) Handles A.TextChanged
If Not UpdatingTextBox Then
UpdatingTextBox = True
B.Text = ""
UpdatingTextBox = False
End If
End Sub
Public Sub B_TextChanged(sender As Object, e As TextChangedEventArgs) Handles B.TextChanged
If Not UpdatingTextBox Then
UpdatingTextBox = True
A.Text = ""
UpdatingTextBox = False
End If
End Sub
推荐阅读
- java - Java Sockets:实时流式传输音频文件
- c# - C# 中带有 XML 标头的 CSV
- html - 按钮值未在表单数据中发送到 servlet
- java - 如果发生错误,如何停止 Reactor flatMap
- kotlin - 如果我使用视图绑定和导航组件,如何在片段的 onCreateView 方法中找到 Snackbar 的视图?
- wpf - 使TextBox大小适应GridView wpf中的列大小?
- javascript - How to call a function, once a prop is updated in a child component. Vue3 composition API
- hibernate - 嵌入式 infinispan 的休眠 ogm 依赖问题
- javascript - 多个用户使用 Google 电子表格插件时的问题
- java - Java HTTP 代理:获取连接的主机名