您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业财务 > C#中Enter键使输入焦点自动跳到下一个TextBox的方法汇总
C#按回车Enter使输入焦点自动跳到下一个TextBox的方法收集在录入界面中,用户往往需要按回车键时光标自动跳入下一个文本框,以方便录入操作。在C#中实现该功能有多种方法,以下是小编收集的不使用TAB键,而直接用回车键将光标转到下一个文本框的实现方法。一、利用Windows消息模拟发送Tab键将各个TextBox的TabIndex属性按顺序编号1、2、3……,然后将TextBox的TabStop属性置为True,在每一个TextBox的键盘按下事件中,执行以下代码即可(各个TextBox可共用同一个键盘按下事件)。///summary///鼠标按键事件。///如果检查到按下的是回车键,则发一个消息,模拟键盘按以下Tab键,以使输入焦点转移到下一个文本框(或其他焦点可停留的控件)////summary///paramname=sender/param///paramname=e/paramprivatevoidtextBox_KeyPress(objectsender,KeyPressEventArgse){if(e.KeyChar==(char)Keys.Enter){SendKeys.Send({tab});}}二、手动置下一个需要获取焦点的文本框如果想让焦点跳到任意文本框或者其他地方,在文本框的键盘按下事件中,将焦点放到目标文本框上。privatevoidtextBox1_KeyPress(objectsender,KeyPressEventArgse){if(e.KeyChar==(char)Keys.Enter){textBox2.focus();//当在文本框1中检查到回车键时,直接将焦点转入TextBox2}}三、利用控件的SelectNextControl函数按方法一中设置好TextBox的TabIndex和TabStop属性,在C#回车Enter事件中,调用控件的SelectNextControl函数,是的输入焦点跳到下一个TextBox(文本框)。以下示例是在窗口显示控件中,统一为TextBox的鼠标按下KeyDown事件添加处理函数。(示例来自红日的百度空间)protectedoverridevoidOnShown(EventArgse){base.OnShown(e);foreach(Controlctinthis.Controls){TextBoxtx=ctasTextBox;if(tx!=null){tx.KeyDown+=(sender,e_args)={if(e_args.KeyCode==Keys.Enter){this.SelectNextControl(tx,true,true,false,true);}}}四、偷梁换柱,将回车键替换成Tab键先设置这些控件的Tab顺序,然后在窗体的后台代码中添加如下函数就可以了protectedoverrideboolProcessDialogKey(KeyskeyData){if(keyData==Keys.Enter)//按下的是回车键{foreach(Controlcinthis.Controls){if(cisSystem.Windows.Forms.TextBox)//当前控件是文本框控件{keyData=Keys.Tab;}}keyData=Keys.Tab;}returnbase.ProcessDialogKey(keyData);}protectedoverrideboolProcessDialogKey(KeyskeyData){if((ActiveControlisTextBox||ActiveControlisComboBox)&&keyData==Keys.Enter){keyData=Keys.Tab;}returnbase.ProcessDialogKey(keyData);}五、C#WinForm自动跳转回车问题有个TEXTBOX输入框!属性设置了可以换行multiline设置了True!在keydwon加了换下一个输入框的命令privatevoidtextDisease_KeyDown(objectsender,KeyEventArgse){if(e.KeyValue==13){textOrganization.Focus();textOrganization.SelectAll();}}在换到下一个时,原来的输入框也会加了个有回车!如何处理掉这个回车!解决方法1:设置按键的e.Handled属性textDisease_KeyDown(objectsender,KeyEventArgse){if(e.KeyValue==13){e.Handled=TruetextOrganization.Focus();textOrganization.SelectAll();}}加一句e.Handled=True。目的是让系统不要处理该Enter按键。解决办法2:使用textChange事件privatevoidtextDisease_TextChanged(objectsender,EventArgse){textDisease.Text=textDisease.Text.Trim().Replace(\r\n,);}六、在网页程序中不使用TAB键直接用回车键将光标转到下一个文本框的方法在C#.NET中,可以使用JaveScript脚本实现不使用TAB键,而直接用回车键将光标转到下一个文本框。%@Pagelanguage=c#Codebehind=WebForm1.aspx.csAutoEventWireup=falseInherits=回车使下一个文本框得到焦点.WebForm1%scriptlanguage=javascriptfunctionsetfocus(){document.all.t2.focus();}/script七、如何在文本框输入框里按回车键,光标自动跳转到下一个文本框输入框或者是执行某按钮的提交?这两个问题的本质是一样的,一般是借助客户端脚本来解决,举例如下。%@PageLanguage=C#%scriptrunat=serverprotectedvoidButton_Click(objectsender,EventArgse){Lable1.Text=您点击了:+((Button)sender).Text;}protectedvoidPage_Load(objectsender,EventArgse){intTextBoxNum=4;for(inti=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脚本:scriptlanguage=javascripttype=text/javascsriptfunctionTabNext(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%@PageLanguage=C#AutoEventWireup=trueCodeFile=test.aspx.csInherits=test%!DOCTYPEhtmlPUBLIC-//W3C//DTDXHTML1.0Transitional//EN==servertitle无标题页/titlescriptlanguage=javascript!--functionsetfocus(){if(event.keyCode==13){event.keyCode=9}}//--/script/headbodyformid=Form1onkeydown=setfocus()runat=serverDIValign=leftasp:TextBoxid=TextBox1runat=server/asp:TextBox/DIVDIValign=leftasp:TextBoxid=TextBox2runat=server/asp:TextBox/DIVDIValign=leftasp:TextBoxid=TextBox3runat=server/asp:TextBox/DIVDIValign=left/DIVDIValign=leftasp:Buttonid=Button1runat=serverText=Button/asp:Button/DIV/form/body/html
本文标题:C#中Enter键使输入焦点自动跳到下一个TextBox的方法汇总
链接地址:https://www.777doc.com/doc-4710947 .html