VB.net 中,TextBox 控件如何显示提示文字?(密码输入框)
用灰色显示“请输入密码”,当鼠标点击的时候灰色的字就消失。当输入框中没有内容并且焦点离开输入框的时候又恢复提示文字。
这样的效果经常见于网页当中,如果想把它放进Windows窗体中,请往下看
其实是利用了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
<span><span style="font-family:Verdana;color:#000000;">程序运行后,单击SetText按钮,输入提示信息。TextBox会在失去焦点时显示提示语言,得到焦点时提示语消失。</span></span>