我在SO上看到過一些類似的問題,但似乎並沒有真正解決這個問題。這是一個簡化版本的功能。爲什麼textbox.focus會拋出lostFocus事件?
Private Sub Check_Quantity(sender As System.Object, e As System.Windows.RoutedEventArgs) _
Handles textbox_quantity.LostFocus
Dim worked As Boolean = Integer.TryParse(textbox_quantity.Text, quantity)
If Not worked Then
MsgBox("Enter a valid number for the quantity")
textbox_quantity.Focus()
textbox_quantity.SelectAll()
quantity = 0
End If
End Sub
請務必注意,這是WPF。我想要做的事很簡單。當某人完成文本框時,程序檢查他們輸入的是一個數字。如果確實如此,則將其固定爲整數。如果沒有,它會告訴他們修復它,並將重點放在文本框上。這個問題是一些問題,但是它涉及的是這個函數在無限循環中運行。這個相同的函數在WinForms中工作正常,但在WPF中不起作用。
在其他一些問題上,人們說,出現的消息框導致焦點丟失,但在測試中這不是事實。無論消息框是否被調用,它仍然會循環。問題是調用textbox_quantity.Focus()。沒有它,它工作正常。不管是否存在,雖然textbox_quantity.Focus()仍然返回值爲true,但未將焦點設置爲文本框。任何想到發生了什麼事情,也許我該如何解決它?
@HansPassant什麼?它不是一個函數,它不被我的其他代碼調用,它從一個事件中調用(請注意「Handles textbox_quantity.LostFocus」)。它不會返回任何東西,也不需要。我指的是代碼行textbox_quantity.Focus()返回值爲true時,我檢查返回 – cost 2012-07-06 22:03:02