如何在 TextBox 上添加 Click 事件






1.62/5 (8投票s)
如何在 TextBox 上添加 Click 事件
引言
几天前,我正在使用 VB.NET VS2005 开发智能设备应用程序,并且我需要“TextBox”控件的点击事件功能。由于默认情况下 TextBox 控件不提供点击事件的实现,我一直在想如何实现它。我不如在 Web 应用程序开发方面擅长 Windows 应用程序开发(这并不意味着我在 Web 应用程序方面很厉害;)。
好吧,像往常一样,“谷歌叔叔”来帮助我,我在 MSDN 和 Microsoft 论坛上找到了一些文章,提出了解决我问题的方案。背景
让我更详细地描述一下 TextBox 上的事件。原生 VS 2005 提供了文本框上大量的事件列表,您可以在将某个事件与控件关联时看到这些事件。例如:在 TextBox 上
在 C# 中,类似于:
Textbox1.Change += Event_Handler();
或者在 VB.NET 中
.NET 并不提供所有事件的实现,只提供一些您可以在控件属性窗口和点击事件选项卡中看到的事件,这些是已实现的事件,其余的都是声明的,如代码片段中所示,点击事件存在于文本框事件列表中,但如果您注册该事件,它将无法为您工作,因为它没有从 .NET 提供实现。您需要实现此功能。
使用代码
1) 创建一个 VB.NET Windows 应用程序项目,并将其命名为“ClickableTextBoxProj”。
2) 从解决方案资源管理器中向您的项目“ClickableTextBoxProj”添加一个新的模块。
ClickableTextBoxProj > 添加 > 添加新项目> 模块,随意命名。我将其命名为“ctrl”。
3) 在新添加的模块内的嵌套类中,编写继承 TextBox 类的类。我已将其添加到模块,但您也可以将其创建为新类。
4) 在嵌套类“SingleClickTextBox”中,重写“OnClick”事件。如下所示:
Module ctrl
Public Class SingleClickTextBox
Inherits TextBox
Protected Overrides Sub OnClick(ByVal e As EventArgs)
Me.SelectAll()
MyBase.OnClick(e)
End Sub
End Class
End Module
6) 现在打开 form1.designer.vb 并搜索 InitializeComponent(),创建新创建类的实例,并在 InitializeComponent() 方法中设置控件的属性。
7) 在 form1.vb 中编写点击事件处理程序函数,并编写一些代码,例如消息框或类似内容,以检查事件是否被引发以及代码是否被执行。
就是这样,执行该项目并单击文本框以查看结果。包含完整项目和源代码。
关注点
此代码仅在 Windows Forms 上有效,但此重写的点击事件在 Compact Framework 上的 Pocket PC 应用程序中不受支持,因为 Compact Framework 提供了非常有限的功能以最小化其大小。
因此,我们需要一种解决方法才能在 Pocket PC 应用程序上获得相同的功能。Microsoft 提供了 win32 和 WndProcHooker 类,这些类用于实现 MSDN 网站上提供的控件事件。
历史
我们将在下一篇文章中讨论“使用本机回调对 TextBox 进行子类化”。