2016-06-09 31 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的工作。 –

相關問題