代码改变世界

设置TextBox的提示文字

2009-04-29 11:35  Kaedei  阅读(4645)  评论(1编辑  收藏  举报

VB2008中,TextBox 控件如何显示提示文字?(密码输入框)
用灰色显示“请输入密码”,当鼠标点击的时候灰色的字就消失。当输入框中没有内容并且焦点离开输入框的时候又恢复提示文字。

 

这样的效果经常见于网页当中,如果想把它放进Windows窗体中,请往下看

语言:Visual Basic 2005/2008

 

其实是利用了Windows Vista中的新API,使用 SendMessage 函数向目标文本框发送 EM_SETCUEBANNER 消息

先声明SendMessage API:

    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
                                (ByVal hwnd As IntPtr, _
                                 ByVal wMsg As Integer, _
                                 ByVal wParam As IntPtr, _
                                 ByVal lParam As Byte()) _
                                 As Integer

然后是EM_SETCUEBANNER 的定义

Public Const EM_SETCUEBANNER As Integer = &H1501

其中 As Integer 可选

 

窗体设计如下:

示例窗体

 

单击"SetText”按钮,设置提示文本,单击“Focus”按钮,将焦点从文本框上移除。

下面是SetText按钮的代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'Set TipText
    Dim text = InputBox("Please Input TipText", "Input TipText", "This is a Tip Text")
    'SendMessage API
    SendMessage(TextBox1.Handle, _
                         EM_SETCUEBANNER, _
                         IntPtr.Zero, _
                         System.Text.Encoding.Unicode.GetBytes(text))
End Sub
程序运行后,单击SetText按钮,输入提示信息。TextBox会在失去焦点时显示提示语言,得到焦点时提示语消失。
Test Program 
示例代码下载地址:
点击下载