是否有任何VB.Net事件与VBA“AfterUpdate”相同?

时间:2016-06-09 09:53:03

标签: vb.net textbox updating

我需要在fatal error: unexpectedly found nil while unwrapping an Optional value (lldb) 更改后执行某些操作。

如果我使用TextBox事件,则代码会在插入或删除的每个字符上运行。

谷歌搜索我发现了一个建议here使用TextChanged变量来存储String的值并使用TextBoxEnter个事件。

这是唯一(或更好)的方式吗?

2 个答案:

答案 0 :(得分:0)

我相信你想在更改文字完成后更新其他内容。 在每次击键/更改事件时更新其他东西可能会很昂贵。

为此,您可以使用计时器来检测用户是继续按键还是已暂停。

示例

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