怎样textbox中获取KeyPress事件?

lee0459 2003-04-03 06:32:56
希望在textbox中输入完后内容后直接按回车键获得事件,请问怎么办?
...全文
106 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
TheAres 2003-04-03
  • 打赏
  • 举报
回复
不好意思,实际上第一个帖子中的说法并不是很全面,当Form的KeyPreview设置为false的时候,在textbox的keypress中是可以抓到回车的。

private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar == (char)13)
{
MessageBox.Show("kkk");
}

}

当Form的keypreview设置为true的时候,Form就会先抓取。这时候,判断一下this.ActiveControl,转换为textbox,然后判断name或者其他的属性。

protected override bool ProcessDialogKey(Keys keyData)
{

if (keyData == Keys.Return)
{
TextBox t = this.ActiveControl as TextBox;
if (t != null)
{
if (t.Name == "textBox1")
{
MessageBox.Show("抓到了");
return true;
}
}
}

base.ProcessDialogKey(keyData);
return false;

}
lee0459 2003-04-03
  • 打赏
  • 举报
回复
TheAres(班门斧) :你的方法的确能抓到,但是所有textbox里都捕捉到这个事件了,怎么能这对多个textbox中的一个抓回车呢
自由之眼 2003-04-03
  • 打赏
  • 举报
回复

private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar==13)
{
}
}
TheAres 2003-04-03
  • 打赏
  • 举报
回复
在textbox的keypress中抓不得回车,要重载Form的ProcessDialogKey来抓。
比如:(将下面代码拷贝到Form代码中)
protected override bool ProcessDialogKey(Keys keyData)
{

if (keyData == Keys.Return && this.ActiveControl is TextBox)
{
MessageBox.Show("抓到了");
return true;
}

base.ProcessDialogKey(keyData);
return false;

}
}
base.ProcessDialogKey(aKey);
return false;
}

110,566

社区成员

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

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

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