专栏首页c#学习笔记C#学习笔记——回车Enter使输入焦点自动跳到下一个TextBox

C#学习笔记——回车Enter使输入焦点自动跳到下一个TextBox

在录入界面中,用户往往需要按回车键时光标自动跳入下一个文本框,以方便录入操作。在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 == 13)
{
textOrganization.Focus();
textOrganization.SelectAll();
}
}

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

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

textDisease_KeyDown(object sender, KeyEventArgs e) 
{ 
  if (e.KeyValue == 13) 
  { 
    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=4;
for(int i=1;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==13)
{
if(s1=="0")
{
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==13) 
{ 
event.keyCode=9 
} 
} 
// --> 
</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>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Silverlight:用Enter键替换Tab键切换焦点

    业务系统中,很多录入人员习惯于用Enter键来代替Tab键切换控件焦点(虽然我个人并不觉得这样录入速度会变得有多高效,呵呵),有需求了,自然就得想办法满足。 思...

    菩提树下的杨过
  • C#开发中表单提交Ctrl+Enter和Enter快捷键的jQuery实现方式

    以前写HRM系统的时候,通过C#代码和javascript实现过文本输入框中Enter提交表单的功能,使用的原理是针对textbox进行Enter键的监控,如果...

    崔文远TroyCui
  • Intellij IDEA神器居然还有这些小技巧

    https://blog.csdn.net/linsongbin1/article/details/80211919

    Java学习
  • Excel催化剂开源第23波-VSTO开发辅助录入功能关键技术

    在Excel催化剂的几大辅助录入功能中(数据验证保护、数据多级联动输入、关键词模糊智能匹配输入)中,用了一些customxmlPart技术来存储配置信息,同时在...

    Excel催化剂
  • IntelliJ IDEA一些强大功能你知道多少

    现在大家的开发工具应该大多数都是IntelliJ IDEA了,肯定也难免少部分人在使用Eclipse,不过我个人还是强烈推荐使用IDEA,虽然刚从Eclipse...

    攻城狮的那点事
  • 【收藏向】Intellij IDEA居然有这么多隐藏技巧

    Intellij IDEA真是越用越觉得它强大,写代码的时候,不时给我们来个小惊喜。大雄最近看到了一些关于 IDEA 小技巧,很实用!给小伙伴分享一下~

    老九君
  • Windows 8.1 应用再出发 - 几种常用控件

    本篇为大家简单介绍Windows 商店应用中控件的用法,为方便讲解,我们在文本控件和按钮控件这两类中分别挑选有代表性的控件进行详细说明。 1. 文本控件 (1)...

    Shao Meng
  • Intellij IDEA神器居然还有这些小技巧

    Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对Intellij IDEA的喜爱,我决定写一个与其相关的专...

    前端教程
  • Intellij IDEA神器居然还有这些小技巧

    Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对Intellij IDEA的喜爱,我决定写一个与其相关的专...

    java进阶架构师
  • Sublime Text 3安装与使用

    本文是Sublime Text 全程指引 by Lucida (http://www.cnblogs.com/figure9/p/sublime-text-co...

    py3study
  • Intellij IDEA神器居然还有这些小技巧

    Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对Intellij IDEA的喜爱,我决定写一个与其相关的专...

    Java3y
  • Intellij IDEA神器居然还有这些小技巧

    Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对Intellij IDEA的喜爱,我决定写一个与其相关的专...

    用户5224393
  • Intellij IDEA神器居然还有这些小技巧

    Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对Intellij IDEA的喜爱,我决定写一个与其相关的专...

    Java团长
  • Intellij IDEA神器居然还有这些小技巧

    Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对Intellij IDEA的喜爱,我决定写一个与其相关的专...

    互扯程序
  • 一文告诉你,Intellij IDEA神器隐藏的11种实用小技巧!

    我们可以使用【Presentation Mode】,将IDEA弄到最大,可以让你只关注一个类里面的代码,进行毫无干扰的coding。

    java思维导图
  • 一文告诉你,Intellij IDEA神器隐藏的11种实用小技巧!

    我们可以使用【Presentation Mode】,将IDEA弄到最大,可以让你只关注一个类里面的代码,进行毫无干扰的coding。

    程序猿DD
  • Intellij IDEA 神器居然还有这些小技巧

    Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对Intellij IDEA的喜爱,我决定写一个与其相关的专...

    happyJared
  • Intellij IDEA 神器居然还有这些小技巧

    Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对Intellij IDEA的喜爱,我决定写一个与其相关的专...

    芋道源码
  • IntelliJ IDEA 常用快捷键列表及技巧大全

    F9 resume programe 恢复程序 Alt+F10 show execution point 显示执行断点 F8 Step Over 相当于ec...

    chenchenchen

扫码关注云+社区

领取腾讯云代金券