在 ASP.net Webforms 中,如何检测有人按了哪个文本框 Enter?

请不要使用 Javascript 答案。

我需要使用 VB.NET 在后面的代码中处理这一切。

有帮助吗?

解决方案

为什么需要确定按下的是哪个TextBox?您是否希望查看哪个文本框被聚焦,以便可以触发正确的按钮单击事件?

如果您想做这样的事情,我所做的一个技巧是将适当的表单元素“分组”在它们自己的面板中,然后相应地设置“DefaultButton”属性。

这样做可以让我进行“按名称搜索”、“按部门搜索”、“按 ID 搜索”等。单个表单上的文本框/按钮组合,仍然允许用户键入查询参数,按 Enter 键,并在后面的代码中调用正确的搜索方法。

其他提示

我怀疑没有 javascript 就无法完成 - 当您按 Enter 键时,浏览器会提交表单 - 它不会提交焦点所在的字段。因此,除非您使用 JS 将该信息添加到正在提交的表单中,否则您就不走运了。

如果不使用 Javascript,你就做不到。该信息不会从客户端浏览器传送到服务器。

据我所知,服务器端脚本无法检测到这一点。它根本不会被发送到服务器。它必须在客户端完成(即用Javascript)然后发送到服务器。

我通过查看服务器端的 Request.Form 对象来查看搜索框是否有值,从而解决了一个站点的搜索问题。我在所有页面(或母版页的基类)继承的基类中完成了此操作。如果它有一个值,那么很有可能有人输入一些内容并按回车键,所以我处理了搜索。

在事件处理程序中,“源”对象(事件处理程序的第一个参数)是引发事件的对象。将其键入按钮并获取名称,或使用反射从非键入对象中获取信息。

此外,如果该控件是 Web 控件的子控件,而您没有引发其自己的事件(只是说...),那么您可以使用 OnBubbleEvent 来确定发生了什么。OnBubbleEvent 还有一个“源”参数,您可以输入或使用反射。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top