zoukankan      html  css  js  c++  java
  • 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>privatevoid textBox_KeyPress(object sender, KeyPressEventArgs e) {   if (e.KeyChar == (char)Keys.Enter)   {     SendKeys.Send("{tab}");   } }

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

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

    privatevoid 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事件添加处理函数。(示例来自红日的百度空间

    protectedoverridevoid OnShown(EventArgs e) {   base.OnShown(e);   foreach (Control ct inthis.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顺序,然后在窗体的后台代码中添加如下函数就可以了

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

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

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

    privatevoid 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事件 

    privatevoid textDisease_TextChanged(object sender, EventArgs e) {     textDisease.Text = textDisease.Text.Trim().Replace(" ", ""); }

    六、在网页程序中不使用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">protectedvoid Button_Click(object sender,EventArgs e) {Lable1.Text="您点击了:"+((Button)sender).Text;} protectedvoid 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 } elseif(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; } elseif(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>
  • 相关阅读:
    动态生成 Excel 文件供浏览器下载的注意事项
    JavaEE 中无用技术之 JNDI
    CSDN 泄露用户密码给我们什么启示
    刚发布新的 web 单点登录系统,欢迎下载试用,欢迎提建议
    jQuery jqgrid 对含特殊字符 json 数据的 Java 处理方法
    一个 SQL 同时验证帐号是否存在、密码是否正确
    PostgreSQL 数据库在 Windows Server 2008 上安装注意事项
    快速点评 Spring Struts Hibernate
    Apache NIO 框架 Mina 使用中出现 too many open files 问题的解决办法
    解决 jQuery 版本升级过程中出现 toLowerCase 错误 更改 doctype
  • 原文地址:https://www.cnblogs.com/ful1021/p/4804447.html
Copyright © 2011-2022 走看看