65.9K
CodeProject 正在变化。 阅读更多。
Home

如何在 TextBox 上添加 Click 事件

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.62/5 (8投票s)

2008年1月4日

CPOL

2分钟阅读

viewsIcon

98841

downloadIcon

1064

如何在 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 进行子类化”。

© . All rights reserved.