ページに 3 つの TextBox コントロールがあります
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True"
OnTextChanged="TextBox_TextChanged" TabIndex="1">
<asp:TextBox ID="TextBox2" runat="server" AutoPostBack="True"
OnTextChanged="TextBox_TextChanged" TabIndex="2">
<asp:TextBox ID="TextBox3" runat="server" AutoPostBack="True"
OnTextChanged="TextBox_TextChanged" TabIndex="3">
およびイベント ハンドラー
protected void TextBox_TextChanged(object sender, EventArgs e)
{
WebControl changed_control = (WebControl)sender;
var next_controls = from WebControl control in changed_control.Parent.Controls
where control.TabIndex > changed_control.TabIndex
orderby control.TabIndex
select control;
next_controls.DefaultIfEmpty(changed_control).First().Focus();
}
このコードの意味は、ページのポストバック後に次の TabIndex で TextBox を自動的に選択することです ( Little JB の問題を参照)。実際には、System.Web.UI.LiteralControl (WebControl.Controls には実際には LiteralControls が含まれています) から System.Web.UI.WebControls.WebControl にキャストできないため、InvalidCastException を受け取ります。
このアプローチを何らかの方法で変更して、実用的なソリューションを受け取ることは可能ですか? ありがとうございました!