2016-06-09 30 views
1

我需要在TextBox更改后执行某些操作。是否有任何VB.Net事件与VBA“AfterUpdate”一样?

如果我使用TextChanged事件上插入或删除每一个字符代码的运行。

谷歌搜索,我发现一个使用String变量来存储TextBox值,并使用EnterLeave事件表明here

它是唯一的(或更好)的方式来做到这一点?

回答

0

我相信你想更新一些其他的东西后文字改变已经完成。 更新每个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 
+0

谢谢,但我正在寻找更轻的东西。 – genespos

+0

你能更具体地了解需求吗? – pankaj

+0

使用Enter和Leave非常简单。我问是否有更好的解决办法 – genespos

0

实际上,你有两种选择:

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,这个想法是给用户两次击键之间半秒。如果我们在这个计时器内,我们再次等待,表示文字已经改变。

+0

是的,但它是我已经发现 – genespos

+0

是啊,我只是将它改编了一点,所以它看起来简单的解决方案... –

+0

另一种方案是[这里](HTTP://计算器.com/a/671735/5897829),并重新开始@pankaj的工作。 –

相关问题