У меня есть четыре текстовых поля внутри UpdatePanel, а для AutoPostBack установлено значение True для всех из них. Когда пользователь вводит значение и нажимает Enter, я хочу, чтобы курсор автоматически переместился в следующее текстовое поле. Когда у меня нет элементов управления в UpdatePanel, стандартный метод textbox.focus работает нормально.Настройка фокуса на текстовое поле в UpdatePanel
Я нашел код here, который привел меня к созданию этого:
Protected Sub txtField_TextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles txtField1.TextChanged,
txtField2.TextChanged, txtField3.TextChanged
'Based on the textbox where data was changed, move the cursor to the next field.
Try
Dim sm As ScriptManager = ScriptManager.GetCurrent(Me)
'As multiple textboxes fire this same event, determine which textbox triggered this.
Dim MyTextbox As TextBox = TryCast(sender, TextBox)
Select Case MyTextbox.ID.ToString
Case "txtField1"
sm.SetFocus(txtField2)
Case "txtField2"
sm.SetFocus(txtField3)
Case "txtField3"
sm.SetFocus(txtField4)
End Select
Catch ex As Exception
lblError.Text = "Error in [txtField_TextChanged]: " & ex.Message
End Try
End Sub
Что действительно странно, что это работает РАЗ на любом поле я стараюсь первым. После этого событие запускается, но фокус не меняется. Есть ли что-то дополнительное, что мне нужно для последующих вызовов?
Буду признателен за любые предложения. Спасибо!