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>