UpdatePanel 内に 4 つのテキスト ボックスがあり、それらすべてに対して AutoPostBack が True に設定されています。ユーザーが値を入力して Enter キーを押すと、カーソルが次のテキスト ボックスに自動的に移動するようにします。UpdatePanel にコントロールがない場合、標準の textbox.focus メソッドは正常に機能します。
これを作成するきっかけとなったコードをここで見つけました:
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
本当に奇妙なのは、これが最初に試したフィールドで一度だけ機能することです。その後、イベントが発生しますが、フォーカスは変わりません。後続の呼び出しのために追加する必要があるものはありますか?
提案をいただければ幸いです。ありがとうございました!