C# winform 返回上一个文本框

lili20090907 2012-02-07 02:12:25
一个窗体上 有TextBox ,button,label,gridview 。如果用户 在一个文本框获取焦点时按了 上键 就让这个文本框之前的那个文本框获取输入焦点。如何做?
...全文
147 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kong19 2012-02-07
  • 打赏
  • 举报
回复
外面还需要一个循环,自己加上吧,用control.GetType()判断是不是文本框
kong19 2012-02-07
  • 打赏
  • 举报
回复
int tabIndex = ((TextBox)sender).TabIndex;
int i = 1;
foreach(Control cl in this.Controls)
{
if(cl.TabIndex == tabIndex - i)
{
if(sender.GetType().Equles(cl.GetType()))
{
cl.Focus();
break;
}
else
{
i++;
continue;
}
}
}
loveSoftandhxy 2012-02-07
  • 打赏
  • 举报
回复
那你要保存上一个text的状态了。
因为你每次操作的上一次的text不一定是设定tab的id

每次按上键时,都把当前的保存下。
knna_ 2012-02-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lili20090907 的回复:]

而是要获取上一个文本框,上一个控件不一定就是文本框
[/Quote] 朋友你到底要获得什么。。。。。。
lili20090907 2012-02-07
  • 打赏
  • 举报
回复
你直接 减1 获取上一个了。但是 看我的问题 。我的不是要获取上一个 而是要获取上一个文本框,上一个控件不一定就是文本框
knna_ 2012-02-07
  • 打赏
  • 举报
回复
选中文本框。。它有个Leave事件。。在里面编写另外一个控件获取焦点的代码:
private void txtData_Leave(object sender, EventArgs e)
{
textBox1.Focus();
}


kong19 2012-02-07
  • 打赏
  • 举报
回复

KeyDown
int tabIndex = ((TextBox)sender).TabIndex;
foreach(Control cl in this.Controls)
{
if(cl.TabIndex == tabIndex - 1)
{
cl.Focus();
break;
}
}
knna_ 2012-02-07
  • 打赏
  • 举报
回复
文本框不是有个失去焦点的事件嘛。。在哪里写上另外一个文本框获取焦点的代码。。ok
lili20090907 2012-02-07
  • 打赏
  • 举报
回复
如何 根据 TabIndex 来 获取 控件?
kong19 2012-02-07
  • 打赏
  • 举报
回复
按tabIndex把控件排好。

KeyDown时判断是“上键”时, 遍历this.Controls 取出tabIndex 是当前控件tabIndex - 1的控件(上下限自己判断),
Control.Focus();
manupstairs 2012-02-07
  • 打赏
  • 举报
回复
1.可以考虑通过tab索引来记录,在TextBox的KeyDown事件中,返回上一个TabIndex

2.自己建立集合来记录TextBox的点击顺序,同样在KeyDown事件中,返回上一个TextBox,并从集合中删除当前TextBox的记录

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧