我需要在TextBox
更改后执行某些操作。是否有任何VB.Net事件与VBA“AfterUpdate”一样?
如果我使用TextChanged
事件上插入或删除每一个字符代码的运行。
谷歌搜索,我发现一个使用String
变量来存储TextBox
值,并使用Enter
和Leave
事件表明here。
它是唯一的(或更好)的方式来做到这一点?
我需要在TextBox
更改后执行某些操作。是否有任何VB.Net事件与VBA“AfterUpdate”一样?
如果我使用TextChanged
事件上插入或删除每一个字符代码的运行。
谷歌搜索,我发现一个使用String
变量来存储TextBox
值,并使用Enter
和Leave
事件表明here。
它是唯一的(或更好)的方式来做到这一点?
我相信你想更新一些其他的东西后文字改变已经完成。 更新每个keystroke/textchanged事件上的其他东西可能会很昂贵。
的,你可以用计时器来检测羯羊用户击键继续或已暂停。
例如
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
TimerUserTypingDone.Stop()
TimerUserTypingDone.Interval = 400 ' duration to wait till concluding that typing by user is finished, and get results
TimerUserTypingDone.Start()
End Sub
Private Sub TimerUserTypingDone_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerUserTypingDone.Tick
TimerUserTypingDone.Stop()
UpdateWhatsoEverRequired()
End Sub
实际上,你有两种选择:
1使用Enter-Leave
模式。
这样,你当你在TextBox
进入,当你离开它你比较新的值保存文本值。
Private _originalText As String 'To remember the text
Private Sub MyTextBox_Enter(Sender As Object, e As EvventArgs) Handles MyTextBox.Enter
'When we enter the TextBox, we save the text value
_originalText = MyTextBox.Text
End Sub
Private Sub MyTextBox_Leave(Sender As Object, e As EventArgs) Handles MyTextBox.Leave
If MyTextBox.Text <> _originalText Then
'The text has changed
Else
'The text has not changed
End If
End Sub
2使用计时器可以检测用户输入完成时间。
如前所述here,这个想法是给用户两次击键之间半秒。如果我们在这个计时器内,我们再次等待,表示文字已经改变。
是的,但它是我已经发现 – genespos
是啊,我只是将它改编了一点,所以它看起来简单的解决方案... –
另一种方案是[这里](HTTP://计算器.com/a/671735/5897829),并重新开始@pankaj的工作。 –
谢谢,但我正在寻找更轻的东西。 – genespos
你能更具体地了解需求吗? – pankaj
使用Enter和Leave非常简单。我问是否有更好的解决办法 – genespos