在录入界面中,用户往往需要按回车键时光标自动跳入下一个文本框,以方便录入操作。在C#中实现该功能有多种方法,以下是小编收集的不使用TAB键,而直接用回车键将光标转到下一个文本框的实现方法。

一、利用Windows消息模拟发送Tab键

将各个TextBox的TabIndex属性按顺序编号1、2、3……,然后将TextBox的TabStop属性置为True,在每一个TextBox的键盘按下事件中,执行以下代码即可(各个TextBox可共用同一个键盘按下事件)。

/// <summary>
/// 鼠标按键事件。
/// 如果检查到按下的是回车键,则发一个消息,模拟键盘按以下Tab键,以使输入焦点转移到下一个文本框(或其他焦点可停留的控件)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
SendKeys.Send("{tab}");
}
}

二、手动置下一个需要获取焦点的文本框

如果想让焦点跳到任意文本框或者其他地方, 在文本框的键盘按下事件中,将焦点放到目标文本框上。

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
textBox2.focus(); //当在文本框1中检查到回车键时,直接将焦点转入TextBox2
}
}

三、利用控件的SelectNextControl函数

按方法一中设置好TextBox的TabIndex和TabStop属性,在C# 回车Enter事件中,调用控件的SelectNextControl函数,是的输入焦点跳到下一个TextBox(文本框)。

以下示例是在窗口显示控件中,统一为TextBox的鼠标按下KeyDown事件添加处理函数。(示例来自红日的百度空间)

protected override void OnShown(EventArgs e)
{
base.OnShown(e);
foreach (Control ct in this.Controls)
{
TextBox tx = ct as TextBox;
if (tx != null)
{
tx.KeyDown += (sender, e_args) =>
{
if (e_args.KeyCode == Keys.Enter)
{this.SelectNextControl(tx, true, true, false, true);}
}

四、偷梁换柱,将回车键替换成Tab键

先设置这些控件的Tab顺序,然后在窗体的后台代码中添加如下函数就可以了

protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == Keys.Enter)  // 按下的是回车键
{
foreach (Control c in this.Controls)
{
if (c is System.Windows.Forms.TextBox)  // 当前控件是文本框控件
{
keyData = Keys.Tab;
}
}
keyData = Keys.Tab;
}
return base.ProcessDialogKey(keyData);
} protected override bool ProcessDialogKey(Keys keyData)
{
if ((ActiveControl is TextBox || ActiveControl is ComboBox) &&
keyData == Keys.Enter)
{
keyData = Keys.Tab;
}
return base.ProcessDialogKey(keyData);
}

五、C#WinForm自动跳转回车问题

有个TEXTBOX输入框!属性设置了可以换行multiline设置了True!在keydwon加了换下一个输入框的命令

private void textDisease_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == )
{
textOrganization.Focus();
textOrganization.SelectAll();
}
}

在换到下一个时,原来的输入框也会加了个有回车!如何处理掉这个回车!

解决方法1:设置按键的e.Handled属性

textDisease_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == )
{
e.Handled = True
textOrganization.Focus();
textOrganization.SelectAll();
}
}

加一句e.Handled = True。目的是让系统不要处理该Enter按键。

解决办法2:使用textChange事件

private void textDisease_TextChanged(object sender, EventArgs e)
{
textDisease.Text = textDisease.Text.Trim().Replace("\r\n", "");
}

六、在网页程序中不使用TAB键直接用回车键将光标转到下一个文本框的方法

在C#.NET中,可以使用JaveScript脚本实现不使用TAB键,而直接用回车键将光标转到下一个文本框。

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="回车使下一个文本框得到焦点.WebForm1" %>
<script language=javascript>
function setfocus() { document.all.t2.focus(); }
</script> 

七、如何在文本框输入框里按回车键,光标自动跳转到下一个文本框输入框或者是执行某按钮的提交?

这两个问题的本质是一样的,一般是借助客户端脚本来解决,举例如下。

<%@ Page Language="C#" %>
<script runat="server">
protected void Button_Click(object sender,EventArgs e)
{
Lable1.Text="您点击了:"+((Button)sender).Text;
}
protected void Page_Load(object sender,EventArgs e)
{
int TextBoxNum=;
for(int i=;i<=TextBoxNum;i++)
{
if(i!=TextBoxNum)
{
((TextBox)form1.FindControl("TextBox"+i.ToString())).Attributes.Add("onkeydown","TabNext(event,'0','"+((TextBox)form1.FindControl("TextBox+(1+i).ToString())).ClientID+'")");
}
else
{
((TextBox)form1.FindControl("TextBox"+i.ToString())).Attributes.Add("onkeydown","TabNext(event,'"+Button2.ClientID+'",)");
}
}
}
</script>

在页面中有一个form1的表单,4个TextBox,还有一个BUtton2按钮,一个Label1,在页面中添加下列javascript脚本:

<script language="javascript" type="text/javascsript">
function TabNext(e,s1,s2)
{
if(window.event)//ie
{
keynum=e.KeyCode
}
else if(e.which)//netscape,firefox,opera
{
keynum=e.which
}
if(keynum==)
{
if(s1=="")
{
document.getElementById(s2).focus()
}
else
{
docuemnt.getElementById(s1).click()
}
if(window.event)
{
e.returnValue=false;
e.cancelBubble=true;
}
else if(e.which)
{
e.rreventDefault()
}
}
}
</script>

记得要把button2的onclick的onclick事件绑定到button_click上。在使用这个方法时,注意TextBox控件的ID的命名规则 TextBox1,TextBox2,TextBox3....和对应的客户端的ID属性。TextBox的Focus()方法允许程序在服务器端设置文本框的焦点..

八、回车焦点自动跳到下一个TEXTBOX

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>
<!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 runat="server">
<title>无标题页</title>
<script language=javascript>
<!--
function setfocus()
{
if(event.keyCode==)
{
event.keyCode=
}
}
// -->
</script>
</head>
<body>
<form id="Form1" onkeydown="setfocus()" runat="server">
<DIV align="left">
<asp:TextBox id="TextBox1" runat="server" ></asp:TextBox></DIV>
<DIV align="left">
<asp:TextBox id="TextBox2" runat="server"></asp:TextBox></DIV>
<DIV align="left">
<asp:TextBox id="TextBox3" runat="server"></asp:TextBox></DIV>
<DIV align="left"> </DIV>
<DIV align="left">
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button></DIV>
</form>
</body>
</html>

C#按回车Enter使输入焦点自动跳到下一个TextBox的方法收集的更多相关文章

  1. 类似智能购票的demo--进入页面后默认焦点在第一个输入框,输入内容、回车、right时焦点自动跳到下一个,当跳到select时,下拉选项自动弹出,并且可以按上下键选择,选择完成后再跳到下一个。

    要实现的效果:进入页面后默认焦点在第一个输入框,输入内容.回车.right时焦点自动跳到下一个,当跳到select时,下拉选项自动弹出,并且可以按上下键选择,选择完成后再跳到下一个. PS:自己模拟的 ...

  2. js input框输入1位数字后自动跳到下一个input框聚焦

    // input框输入1位数字后自动跳到下一个input聚焦 function goNextInput(el){ var txts = document.querySelectorAll(el); f ...

  3. input text输完自动跳到下一个

    应用场景: 短信验证码输入 效果: input输入框,输入完以后自动跳转到下一个 思路: 四个输入框 进入聚焦到第一个输入框 第一个输入框输完一个字符后自动聚焦到下一个输入框 1.四个输入框 < ...

  4. 回车跳到下一个EDIT

    1.按下方法procedure TForm2.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if Key ...

  5. 解决iPhone上select时常失去焦点,随意跳到下一个输入框,影响用户操作

    window.addEventListener('load', function() { FastClick.attach(document.body); }, false); //300s延迟,解决 ...

  6. 【前台页面 BUG】回车按钮后,页面自动跳转

    点击回车按钮后,页面自动的迅速跳转 原因: 表单隐式提交了. 解决方法: 在方法执行完成后,加上return false; 代码如下: /** * 注册按钮的点击事件 */ $("#regi ...

  7. Java中使用nextLine(); 没有输入就自动跳过的问题

    转自:https://www.cnblogs.com/1020182600HENG/p/6564795.html [问题分析] 必要的知识:in.nextLine();不能放在in.nextInt() ...

  8. java中使用nextLine(); 没有输入就自动跳过的问题?

    [问题分析] 必要的知识:in.nextLine();不能放在in.nextInt();代码段后面否则in.nextLine();会读入"\n"字符,但"\n" ...

  9. 干货!微信自动跳转默认浏览器下载app的方法!

    现在微信渠道可以说是拉新最快的渠道,因为微信具备强裂变性.但是目前微信对第三方下载链接的拦截是越来越严格了,那么想要在微信内肆无忌惮地推广链接就需要用到微信跳转浏览器的接口,那如何获取该接口呢?   ...

随机推荐

  1. iSAC测试报告

    iSAC测试报告 测试码流:24k bit/s 测试环境:三星i9250  CPU 1.2G*2   ram:1G  TI芯片  OMAP 4460 双核1.2GHz MOTO ME722  CPU ...

  2. Cocos2dx 把 glview 渲染到 Qt 控件上(Mac 环境)

    本文原链接:http://www.cnblogs.com/zouzf/p/4423256.html 环境:Mac 10.9.2   Xcode5.1.1  Qt5.3  cocos2dx-2.2.4 ...

  3. TokuDB调研文档

    另见链接:http://note.youdao.com/share/?id=77dd1e9cc139b57586665f702467c56a&type=note   安装 安装主要包括两种方法 ...

  4. 一段时间没上来了,看到有很多网友对OWA感兴趣,因为所在公司发展方向的原因,没有太多时间继续深入研究OWA,敬请见谅

    一段时间没上来了,看到有很多网友对OWA感兴趣,因为所在公司发展方向的原因,没有太多时间继续深入研究OWA,敬请见谅

  5. C# Json帮助类

    using System; using System.Collections.Generic; using System.Web; using System.Text; using System.Re ...

  6. oracle vm virtualbox 如何让虚拟机可以上网

    刚安装了虚拟机,系统linux2.6. 可是想安装一些软件,发现没法联网.郁闷~  还要手动设置网络,可是也不是小白就可以干的事情,还要弄清楚原理才行. http://reverland.bitbuc ...

  7. eclipse从数据库逆向生成Hibernate实体类

    做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再“自己”建立一变VO.意思是,在项目设计时,要么 ...

  8. BZOJ 1251 序列终结者(Splay)

    题目大意 网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列要支持几种操作:D.C.B.A.尤其是我们这里的某人,出模拟试题,居然还出了一道这样的,真是没技术 ...

  9. 在Sharepoint2010中一种自定义调查列表的不允许再次答复提示的处理方法!

    在Sharepoint中默认创建的调查列表系统只允许答复一次,再次答复将报错误信息,这对最终用户而言是非常不友好的体验,当然你也可以在调查设置中的常规设置中设置允许多次答复,这样就会有错误提示信息,但 ...

  10. Android UI开发第四十篇——ScrollTricks介绍

    ScrollTricks是一个开源控件,实现了两个简单功能: 1.Quick Return:向上滑动时,View也向上滑动并且消失,当向下滑动时,View马上出现.例如Google Now的搜索功能. ...