【问题标题】:TextBox does not have KeyDown or KeyPress eventsTextBox 没有 KeyDown 或 KeyPress 事件
【发布时间】:2023-03-23 01:22:01
【问题描述】:

我有一个 Visual Basic Web 应用程序,我在表单上放置了一个文本框。当我查看该文本框可用的操作时,唯一可用的操作是 DataBinding、Disposed、Init、Load、PreRender、TextChanged 和 Unload。为什么 KeyDown 不可用?是因为这是一个 Web 应用程序而不是 Windows 应用程序吗?是否可以构建一个事件处理程序,在按下键时触发?也许我必须将我的项目转换为 Windows 应用程序?

【问题讨论】:

  • 将您的应用程序从 Web 转换为 Windows 似乎是一个奇怪的问题。如果您想要一个 Windows 应用程序,那么您应该首先创建一个 Windows 应用程序。您应该花一些时间来了解不同的架构以及每种架构的优缺点。

标签: vb.net events webforms textbox


【解决方案1】:

是的,这就是原因。请记住,在 Web 应用程序中,功能在服务器和客户端之间分离。如果您想对击键做出反应,那么您需要在客户端执行此操作,这意味着使用 JavaScript。

【讨论】:

    【解决方案2】:

    您正在使用 Asp.Net Web 表单应用程序。它存在的真正原因是帮助以前在 WinForms 应用程序上工作的开发人员转向 Web 开发。这就是为什么有一些相似之处,例如WinControls WebControls。但别忘了,你现在在 WEB 中。您的 Button_onClick 事件的工作方式完全不同。如果在 WinForms 上,这是通过按下按钮直接调用的;在 WebForms 上,您的表单被翻译成带有 <form><input . . .> 标签的 HTML 页面。它会自动构建 javascript,因此当您按下按钮时,会对服务器进行 POST 调用。然后,您的服务器接收请求,并在所谓的“页面周期”期间将执行定向到Button_onClick

    一旦您决定您的应用程序需要成为一个 Web 应用程序,您可能应该忘记使用 Web 窗体来做这件事,因为这个系统不是真正的 Web 开发。真正的以 Web 为中心的开发将是基于 Javascript 的 UI,可能使用一些框架,如 Vue 或 Angular 以及 Asp.net Web Api 作为服务器应用程序。也许你应该从 Asp.net MVC 开始。这将使您专注于单个应用程序,因为当您使用 MVC 时,服务器和客户端组件是一起开发的。

    回到主要问题 - 是的,2 个不同的系统,不要指望兼容性。即使某些东西看起来相似,它们的行为也可能不同。

    【讨论】:

      【解决方案3】:

      为什么要捕获击键?

      可以通过代码控制TextBox的输入,例如只输入数字;

      asp:TextBox ID="TextBox3" runat="server" Width="50px" AutoComplete="off" MaxLength="20" type="number" step="any" TabIndex="9">

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 2017-07-08
        • 2013-08-23
        相关资源
        最近更新 更多