刷新后控制TAB键到下一个控件
思路是很简单的,首先是获取引起postback的控件,
接着我自然会想到找到该控件的下一个控件,然后focus(),通过Page.Controls是可以找到,但是我认为这可能无法避免hardCode,因为在服务器段不好判断一个Control是否可以focus().
找了一些资料,我从
得到启发,我想,我让引发PostBack的控件获得焦点,然后引发一个tab键的事件,焦点自然会移到下一个控件,于是我经过一番折腾,得到了一个结论,这是不行的,为什么不行,我也不知道。测试代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Untitled Page</title>
<script>
function ControlFocus(){
var Ka=document.createEventObject();
Ka.ctrlKey=false;
Ka.keyCode=9;
document.fireEvent("onkeydown",Ka);
}
document.onkeydown = new Function("if(event.keyCode==9){alert('Tab');} ");
//该事件仅是测试时使用
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="text" id="test" style="color: Red; border: 0;" onblur="ControlFocus();" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox></div>
</form>
</body>
</html>
按我的想法,当test失去焦点的时候引发事件调用ControlFocus()函数,然后引发一个Tab键,结果Tab键是引发了(测试时能弹出'Tab'),但是焦点却没有转移到下一个控件。查了很多资料也得不到解释,我想既然能通过enter键转化为tab键控制焦点,那么我编程引发tab键应该有同样的效果,结果却不是,网上也不到有关的解释,有高手知道希望解释一下.
没办法,只能通过在服务器端找到下一个控件的办法来实现,虽然没多高的技术含量,还是发出来给大家看一下:
string FocusAbleControlList = System.Configuration.ConfigurationSettings.AppSettings["AbleFocusControlList"];
private bool isFocusAble(string ControlType)
{
if (FocusAbleControlList.IndexOf("," + ControlType + ",") < 0)
{
return false;
}
else
{
return true;
}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (Request.Form["__EVENTTARGET"] != null)
{
Control ocontrol = this.FindControl(Request.Form["__EVENTTARGET"]);
if (ocontrol != null)
{
foreach(Control con in this.Controls)
{
//多个from的情况,这里就hardcode了
if (con.ID != null && con.ID.ToLower().IndexOf("form") > -1) {
int index = con.Controls.IndexOf(ocontrol);
if(index != -1)
{
bool isableFocous = false;
while (!isableFocous)
{
index++;
string[] temp = con.Controls[index].ToString().Split('.');
string typename = temp[temp.Length - 1];
isableFocous = isFocusAble(typename);
}
con.Controls[index].Focus();
}
}
}
}
}
}
发此文的更多是希望能看到各位的思路,我认为要实现这个功能应该还有更简单的方法。
转载于:https://www.cnblogs.com/yfx1982/archive/2007/12/11/991077.html
刷新后控制TAB键到下一个控件相关推荐
- 给所有的Control加两个属性,实现回车键自动跳转到下一个控件
最近一个朋友要做一个操作非常方便的Windows应用程序,就是希望通过按回车键或者上下键,在输入项之间自动跳转,国人都不习惯 使用Tab/Shift Tab在输入项之间的跳转.我之前也使用了一些别的方 ...
- 怎么把一个控件放到tab页面上去?_C/C++应用无障碍化如何支持Tab键浏览
一.前言 我们知道,正常人操作电脑,只需一眼便能得知屏幕上的内容,要想激活某个控件,例如按钮等,只需将鼠标拖动过去点击即可. 但这对于盲人而言,却十分繁琐. 盲人使用屏幕阅读器来操作电脑,在使用某个软 ...
- android 取消控件焦点,C# 给一个控件去掉焦点
给一个控件去掉焦点(如选中控件按钮button时,按钮出现方框显示): 例如给form这个窗体中的button按钮去焦点 1.首先在form这个窗体中拖一个label按钮,去文字,设置背景为透明: 2 ...
- qt 设置焦点 跳到下个控件_【Qt】Qt之Tab键切换焦点顺序【转】
简介 Qt的窗口部件按用户的习惯来处理键盘焦点.也就是说,其出发点是用户的焦点能定向到任何一个窗口,或者窗口中任何一个部件. 焦点获取方式比较多,例如:鼠标点击.Tab键切换.快捷键.鼠标滚轮等. 习 ...
- IDEA自动补全tab键向下选择s-tab向上选择
友情提醒 目前不完美,这样设置完后.tab键制表符功能会受到影响.目前没找到完美的解决办法. 目前是使用其他的按键来代替tab的功能. "代替tab inoremap ~ <Tab&g ...
- Unity 之 UGUI Dropdown下拉控件展开方向控制
Unity 之 UGUI Dropdown下拉控件展开方向控制 有个需要控制下拉控件展开方向的需求,不得探索一下这个下拉方向是由那些属性控制的. 其实我们正常使用的时候你可以发现,下拉控件默认向下展开 ...
- 自定义可扩展叠加头部的下拉控件
最近写了个下拉控件,和几个下拉的头部样式,下拉控件可以连续添加叠加几个头部视图 下面是没有添加任何头部尾部的视图下拉效果 一步一步来介绍,先介绍这个下拉效果,在介绍自定义的头部 首先在使用上,和普通的 ...
- android让一个控件跟上面控件对其,学个明白--Android控件架构
Android控件架构 1.什么是View? View是Android中所有控件的基类.View是界面层的控件的一种抽象,它代表了一个控件.在Android中每个控件都会在界面中占得一块矩形的区域.在 ...
- 具有TreeView下拉控件的ComboBox
具有TreeView下拉控件的ComboBox 没错,如标题所说的那样,在下拉框中是一个TreeView,但是,为什么我们需要这样的控件?事实上这样的需求我已经遇到很多次了,比如适用于: 当遇到层 ...
最新文章
- 2018-03-03-解决win下凭据删除不干净而无法登录共项目录的问题
- VC#打包部署全攻略之(一、添加卸载程序)
- 互联网主要安全威胁解读及应对方案大讨论 | 高可用架构系列
- DirectX10一变换(三)
- 【转】python装饰器
- python 时间差模块_python利用datetime模块计算时间差
- P4011 孤岛营救问题
- javascript promise
- 类特征注意机制融合Deeplabv3+语义分割
- 几行代码实现鼠标自动点击电脑屏幕指定位置,防止电脑或远程桌面休眠
- 微博黄v怎么认证:微博兴趣认证技巧
- c++超详细基础教程(快速入门)
- 利用pandas 读取pdf中的表格文件
- 卸载Office 16 Click-to-Run Extensibility Component详细步骤
- Jenkins(03):配置Jenkins自动发送邮件
- SSD固态盘已坏的数据就恢复不了吗?
- 《Python编程快速上手——让繁琐的工作自动化》读书笔记4
- inputStream 和FileInputStream 转换
- 服务器连接盘柜后盘符空间显示不对,服务器连接磁盘阵列柜
- 周志华西瓜书第三章学习笔记
热门文章
- 【Java面试宝典】深入理解JAVA虚拟机
- [以太坊源代码分析]III. 挖矿和共识算法的奥秘
- 三星t800Android 6.0,6.6毫米品质平板 三星GALAXY Tab S发布
- python绘制直角坐标系_小白学 Python 数据分析(16):Matplotlib(一)坐标系
- mob sdk vue 短信验证_短信接口那些事儿,你知道多少?
- JZOJ 5415. 【NOIP2017提高A组集训10.22】公交运输
- JZOJ 3875. 【NOIP2014八校联考第4场第2试10.20】星球联盟(alliance)
- grep检索关键字的命令_linux系统中java线上问题常用排查命令
- 矩阵运算和文本处理中的分类问题
- 研究生应当具备的三种基本技能