首页 / C# / c# – 如何在回发后维护Tab键顺序
c# – 如何在回发后维护Tab键顺序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何在回发后维护Tab键顺序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1641字,纯文字阅读大概需要3分钟。
内容图文
要求是在输入文本框中的值时进行某些计算,并且由于计算相同,因此textchanged链接到同一事件.
当我选中它时,它会整齐地转到下一个控件并进行回发计算.
现在,在回发和服务器端被调用并执行之后,选项卡顺序混乱并且在选项卡上它不会将焦点带到正确的控件上.它始终指向浏览器窗口中的URL.
请让我知道如何使用tabIndex检索回发后应该是下一个焦点的控件.
<asp:TextBox ID="txtDiscount" runat="server" CssClass="NormalTextBox" TabIndex="45"
MaxLength="3" OnTextChanged="btnCalculatePrice_Click" AutoPostBack="True"></asp:TextBox>
protected void btnCalculatePrice_Click(object sender, EventArgs e)
{....
}
我尝试了下面的代码,但不知道如何获取确切的控件
if(sender!=null)
{
WebControl reqCtrl = (WebControl)sender;
int taborder = reqCtrl.TabIndex;
int nexttabOrder = taborder + 1;
}
解决方法:
使用以下代码,以便在回发后将焦点设置为下一个控件.
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
WebControl wcICausedPostBack = (WebControl)GetControlThatCausedPostBack(sender as Page);
int indx = wcICausedPostBack.TabIndex;
var ctrl = from control in wcICausedPostBack.Parent.Controls.OfType<WebControl>()
where control.TabIndex > indx
select control;
ctrl.DefaultIfEmpty(wcICausedPostBack).First().Focus();
}
}
protected Control GetControlThatCausedPostBack(Page page)
{
Control control = null;
string ctrlname = page.Request.Params.Get("__EVENTTARGET");
if (ctrlname != null && ctrlname != string.Empty)
{
control = page.FindControl(ctrlname);
}
else
{
foreach (string ctl in page.Request.Form)
{
Control c = page.FindControl(ctl);
if (c is System.Web.UI.WebControls.Button || c is System.Web.UI.WebControls.ImageButton)
{
control = c;
break;
}
}
}
return control;
}
内容总结
以上是互联网集市为您收集整理的c# – 如何在回发后维护Tab键顺序全部内容,希望文章能够帮你解决c# – 如何在回发后维护Tab键顺序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。