如何在c#文本框中按enter键运行代码
本文关键字:enter 运行 代码 文本 | 更新日期: 2023-09-27 18:14:29
我正在使用web表单
现在我的代码运行时,我离开文本框,文本已更改。我遇到问题了。如果我改变了文本,但没有按回车键,它就会通过代码重置。我需要能够改变文本,并单击一个按钮,但不会做任何事情,或改变文本,并按回车,这将触发代码。
thanks for the help
这是文本框的文本更改事件,其中包含我需要执行的操作的注释。我真正需要的是一个事件来点击进入,而不是改变文本
protected void txtboxPlate_TextChanged(object sender, EventArgs e)
{
if (txtboxPlate.Text == "plate number")
{
//will check database for "plate number" and do stuff on enter.
}
else
{
resetforms();// on enter
}
else
{
the text has changed by user, but has clicked a button and needs nothing to happen because of this text change
}
}
你需要为你的文本框的KeyDown事件实现一个方法
private void txtboxPlate_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) {
//Code
}
}
Keydown是一个客户端事件,据我所知,你很可能不得不使用JavaScript/Jquery。
参考以下链接:
文本框Keydown事件
我本想用注释,但是…Rep issues:/
编辑:对于那些还没有意识到的人来说,问题已经变成了webforms而不是winforms
替代:使用按钮
你可以在文本框旁边放一个按钮,这很简单,不需要做很多工作。你可以设置文本框的TabIndex为1,按钮的TabIndex为2,所以当你按TAB键时,它会聚焦文本框,如果再按一次,它会聚焦按钮。您还可以考虑将按钮添加到文本框中以达到设计目的。
编辑:你还需要考虑post back,当你点击一个按钮页面get的post back意味着值丢失,要坚持字段内的数据,你必须使用视图状态,会话变量或隐藏字段。为了简单起见,我将文本框的值设置为一个隐藏字段,然后简单地在page_load上重新应用该值。如果该值需要在多个回发/从其他页面访问时持久化,请使用会话变量。
作为代码示例:
完全删除Text_changed事件。
protected void btnDoStuff(object sender, EventArgs e)
{
if(txtPlateNumber.Text == "Plate Number")
{
//Do stuff
}
else
{
//Do other stuff
}
}
如果您注意到值在返回后消失,请执行以下操作:
protected void btnDoStuff(object sender, EventArgs e)
{
if(txtPlateNumber.Text == "Plate Number")
{
//Do stuff
myHiddenField.Value == txtPlateNumber.Text;
}
else
{
//Do other stuff
}
}
如果这是winform,你仍然想使用textchanged,你可以尝试先捕获你的代码,例如:
protected void txtboxPlate_TextChanged(object sender, EventArgs e)
{
//Catching code
if (txtboxPlate.Text != "")
{
if (txtboxPlate.Text == "plate number")
{
//will check database for "plate number" and do stuff on enter.
}
else
{
resetforms();// on enter
}
}
else
{
the text has changed by user, but has clicked a button and needs nothing to happen because of this text change
}
因为textchanged做的是除非txtboxPlate。Text等于"车牌号码",它将始终执行else语句。如果我错了,请纠正我,但是我以前也有过同样的问题,几乎让我发疯。
或尝试以上1个upvote代码:
protected void txtboxPlate_TextChanged(object sender, EventArgs e)
{
//Event only happens if you press enter
if (e.KeyCode == Keys.Enter)
{
if (txtboxPlate.Text == "plate number")
{
//will check database for "plate number" and do stuff on enter.
}
else
{
resetforms();// on enter
}
}
else
{
the text has changed by user, but has clicked a button and needs nothing to happen because of this text change
}
}