自定义cell上的textfield光标颜色输入完成后光标怎么自动跳到下一个

C#按回车Enter使输入焦点自动跳到下一个TextBox的方法收集--种豆网
C#按回车Enter使输入焦点自动跳到下一个TextBox的方法收集
阅读:17596次
在录入界面中,用户往往需要按回车键时光标自动跳入下一个文本框,以方便录入操作。在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 TextB
& & 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.T& & & }& & }& & keyData = Keys.T& }
& return base.ProcessDialogKey(keyData);
}protected override bool ProcessDialogKey(Keys keyData) {
& if ((ActiveControl is TextBox || ActiveControl is ComboBox) && & & & keyData == Keys.Enter) & { & & keyData = Keys.T & }
& 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).T}protected void Page_Load(object sender,EventArgs e){int TextBoxNum=4;for(int i=1;i&=TextBoxNi++){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&
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&
align="left"&
&asp:TextBox
id="TextBox3"
runat="server"&&/asp:TextBox&&/DIV&
align="left"& &/DIV&
align="left"&
&asp:Button id="Button1" runat="server" Text="Button"&&/asp:Button&&/DIV&
&/form& &/body& &/html&
举报 | 纠错 | 建议 |
关于种豆 ┊ 联系我们 ┊ 免责声明 ┊ 发帖须知 ┊ 请提意见 ┊ 站点地图
种豆网资源由热心网友整理,版权归原作者,如有侵权,请Email通知我们。欢迎转载,转载请以超链接方式注明出处。
Copyright&2010-&在UITableViewCell的UITextField中,点&return时,光标移到下一个UITextField
-&(IBAction)textFieldDone:(id)sender&{&&
&&&&//[sender&resignFirstResponder];&&
&&&&UITableViewCell&*cell&=&(UITableViewCell&*)[[sender&superview]&superview];//sender是文本字段,它是表单元视图的内容视图的一个子视图,[cell.contentView&addSubview:&textField];&&
&&&&UITableView&*table&=&(UITableView&*)[cell&superview];&&
&&&&NSIndexPath&*textFieldIndexPath&=&[table&indexPathForCell:cell];&&
&&&&NSUInteger&row&=&[textFieldIndexPath&row];&&
&&&&row++;&&
&&&&if&(row&&=&kNumberOfEditableRows)&{&&
&&&&&&&&row&=&0;&&
&&&&NSIndexPath&*newPath&=&[NSIndexPath&indexPathForRow:row&inSection:0];&&
&&&&UITableViewCell&*nextCell&=&[self.tableView&cellForRowAtIndexPath:newPath];&&
&&&&UITextField&*nextField&=&&&
&&&&for&(UIView&*oneView&in&nextCell.contentView.subviews)&{&&
&&&&&&&&if&([oneView&isMemberOfClass:[UITextField&class]])&{&&
&&&&&&&&&&&&nextField&=&(UITextField&*)oneV&&
&&&&&&&&}&&
&&&&[nextField&becomeFirstResponder];&&
UITextField&*textField&=&[[UITextField&alloc]&initWithFrame:&CGRectMake(90,&12,&200,&25)];&&
&&&&&&&&textField.clearsOnBeginEditing&=&NO;//鼠标点上时,不清空&&
&&&&&&&&[textField&setDelegate:&self];&&
&&&&&&&&//textField.returnKeyType&=&UIReturnKeyD&&
&&&&&&&&[textField&addTarget:self&action:@selector(textFieldDone:)&forControlEvents:UIControlEventEditingDidEndOnExit];//把DidEndOnExit事件响应为&textfieldDone:&方法&&
&&&&&&&&[cell.contentView&addSubview:&textField];&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。29286人阅读
iOS(384)
今天突然做项目的时候,又遇到处理自定义的UITableViewCell上按钮的点击事件问题。我知道有两种方式,可是突然想不起来之前是怎么做的了,好记性不如烂笔头,还是记录一下吧。
1、第一种方式给Button加上tag值
这里分为两种:一种是直接在原生的UITableViewCell上添加UIButton按钮,然后给UIButton设置tag值,然后在控制器里的方法里通过取数据,做界面跳转等。还是举个例子吧,省的回忆半天。
-&(UITableViewCell&*)tableView:(UITableView&*)tableView&cellForRowAtIndexPath:(NSIndexPath&*)indexPath&&{&&&&&&&&&&&&static&NSString&*identifier&=&@&Cell&;&&&&&&&&&&&&UITableViewCell&*cell&=&[tableView&dequeueReusableCellWithIdentifier:reuseIdentifier];&&&&&&if&(cell&==&nil)&{&&&&&&&&&&&cell&=&[[UITableViewCell&alloc]&initWithStyle:UITableViewCellStyleDefault&reuseIdentifier:identifier];&&&&&&&&&&cell.selectionStyle&=&UITableViewCellSelectionStyleN&&&&&&}&&&&&&&User&*user&=&_users[indexPath.row];&&&&&&cell.user&=&&&&&&&&&&&&&UIButton&&*photographButton&=&[UIButton&buttonWithType:UIButtonTypeCustom];&&&&&&photographButton.frame&=&CGRectMake(221&,&10,&100,&44);&&&&&&[photographButton&setImage:[UIImage&imageNamed:@&camera.png&]&forState:UIControlStateNormal];&&&&&&[photographButton&addTarget:self&action:@selector(photographButtonClicked:)&forControlEvents:UIControlEventTouchUpInside];&&&&&&photographButton.tag&=&indexPath.row;&&&&&&[cell.contentView&addSubview:photographButton];&&&&&&&&&&&&return&&&}&&
然后在点击事件中取数据,加信息
-&(void)photographButtonClicked:(UIButton&*)sender{&&&&&&&User&*user&=&_users[sender.tag];&&&&&&PhotoPickerController&*photoPicker&=&[[PhotoPickerController&alloc]&init];&&&&&&photoPicker.user&=&&&&&&&[self.navigationController&pushViewController:photoPicker&animated:YES];&&&&&&&&}&&
以上两个方法都是在同一个控制器中。
另外一种,自定义了UITableViewCell,那么就在UITableViewCell里添加一个代理方法。
#import&&UIKit/UIKit.h&&&&&@protocol&TermCellDelegate&&NSObject&&&&&-&(void)choseTerm:(UIButton&*)&&&&@end&&&&@interface&TermCell&:&UITableViewCell&&&&@property&(retain,&nonatomic)&IBOutlet&UIButton&*checkB&&@property&(retain,&nonatomic)&IBOutlet&UILabel&*termL&&&&@property&(assign,&nonatomic)&BOOL&&isC&&@property&(assign,&nonatomic)&id&TermCellDelegate&&&&&&-&(IBAction)checkAction:(UIButton&*)&&&&@end&&&&#import&&TermCell.h&&&&&@implementation&TermCell&&&&-&(void)awakeFromNib&&{&&&&&&&&}&&&&-&(void)setSelected:(BOOL)selected&animated:(BOOL)animated&&{&&&&&&[super&setSelected:selected&animated:animated];&&&&&&&&&&}&&&&-&(void)layoutSubviews&&{&&&&&&[super&layoutSubviews];&&&&&&if&(_isChecked)&{&&&&&&&&&&[_checkButton&setBackgroundImage:[UIImage&imageNamed:@&task_state_checked&]&forState:UIControlStateNormal];&&&&&&}&else&{&&&&&&&&&&[_checkButton&setBackgroundImage:[UIImage&imageNamed:@&task_state_unchecked&]&forState:UIControlStateNormal];&&&&&&}&&}&&&&-&(void)dealloc&{&&&&&&[_checkButton&release];&&&&&&[_termLabel&release];&&&&&&[super&dealloc];&&}&&&&-&(IBAction)checkAction:(UIButton&*)sender&{&&&&&&if&([_delegate&respondsToSelector:@selector(choseTerm:)])&{&&&&&&&&&&sender.tag&=&self.tag;&&&&&&&&&&[_delegate&choseTerm:sender];&&&&&&}&&}&&&&@end&&
然后再控制器中实现Cell的代理方法即可
#pragma&mark&-&TermCellDelegate&&-&(void)choseTerm:(UIButton&*)button&&{&&&&&&_clickIndex&=&button.tag;&&&&&&UIAlertView&*alertView&=&[[UIAlertView&alloc]&initWithTitle:@&确定修改学期吗?&&message:nil&delegate:self&cancelButtonTitle:@&取消&&otherButtonTitles:@&确定&,&nil&nil];&&&&&&[alertView&show];&&}&&
当然,这里也可以做界面跳转,取数据依然用button的tag值。
第二种,是直接在自定义的Cell里面跳转,这种耦合性比较强。思路先是找到button的父控制器,然后做界面跳转或者其他操作。有这样一个工具方法
#import&&UIView+Additions.h&&&&&@implementation&UIView&(Additions)&&&&-&(UIViewController&*)viewController&&{&&&&&&UIResponder&*next&=&[self&nextResponder];&&&&&&do&{&&&&&&&&&&if&([next&isKindOfClass:[UIViewController&class]])&{&&&&&&&&&&&&&&return&(UIViewController&*)&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&next&=&[next&nextResponder];&&&&&&&&&&&&&&&&}&while&(next&!=&nil);&&&&&&&&&&&&&&&&&&return&nil;&&}&&
头文件就不写了,很简单的扩展。
-&(void)setWeiboModel:(WeiboModel&*)weiboModel&&{&&&&&&if&(_weiboModel&!=&weiboModel)&{&&&&&&&&&&[_weiboModel&release];&&&&&&&&&&_weiboModel&=&[weiboModel&retain];&&&&&&}&&&&&&&&&&&&__block&WeiboCell&*this&=&self;&&&&&&_userImage.touchBlock&=&^{&&&&&&&&&&NSString&*nickName&=&this.weiboModel.user.screen_name;&&&&&&&&&&UserViewController&*userCtrl&=&[[UserViewController&alloc]&init];&&&&&&&&&&userCtrl.userName&=&nickN&&&&&&&&&&[this.viewController.navigationController&pushViewController:userCtrl&animated:YES];&&&&&&&&&&[userCtrl&release];&&&&&&};&&&&&&&&}&&
这里是给Cell赋值model,然后点击事件是用Block实现的。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:889124次
积分:9954
积分:9954
排名:第1290名
原创:19篇
转载:1202篇
评论:48条
(35)(159)(31)(55)(22)(18)(26)(25)(4)(11)(17)(9)(25)(13)(34)(9)(2)(6)(12)(4)(20)(25)(36)(24)(18)(9)(6)(13)(3)(12)(4)(11)(3)(1)(4)(3)(4)(9)(5)(5)(20)(5)(5)(14)(10)(45)(81)(117)(7)(3)(23)(20)(105)(45)匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 textfield光标颜色 的文章

 

随机推荐