我在页面上有三个 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 的问题)。实际上,我收到 InvalidCastException,因为无法从 System.Web.UI.LiteralControl(WebControl.Controls 实际上包含 LiteralControls)转换为 System.Web.UI.WebControls.WebControl。
我很感兴趣是否有可能以某种方式修改这种方法以获得有效的解决方案?谢谢!