C#中Enter键使输入焦点自动跳到下一个TextBox的方法汇总

发布时间:2014-12-17 09:02:38   来源:文档文库   
字号:

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

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

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

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

///



/// 鼠标按键事件。

/// 如果检查到按下的是回车键,则发一个消息,模拟键盘按以下Tab键,以使输入焦点转移到下一个文本框(或其他焦点可停留的控件)

///


///

///

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函数

按方法一中设置好TextBoxTabIndexTabStop属性,在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" %>

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

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

<%@ Page Language="C#" %>

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

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

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

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

"http://www.w3.org/1999/xhtml" >

"server">

</span><span class='r_10_5'>无标题页</span><span class='r_8_5'>







"Form1" onkeydown="setfocus()" runat="server">

"left">

"TextBox1" runat="server" >


"left">

"TextBox2" runat="server">


"left">

"TextBox3" runat="server">


"left">


"left">

"Button1" runat="server" Text="Button">






本文来源:https://www.2haoxitong.net/k/doc/a2f70baa08a1284ac850438b.html

《C#中Enter键使输入焦点自动跳到下一个TextBox的方法汇总.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式