我需要在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