none
TextBox 提示文字 RRS feed

  • 问题

  • VB2008中,TextBox 控件如何显示提示文字?(密码输入框)。

    用灰色显示“请输入密码”,当鼠标点击的时候灰色的字就消失。当输入框中没有内容并且焦点离开输入框的时候又恢复提示文字。很多网站的登陆都有这样的功能。如何实现?我写的是EXE程序,不是网页
    2009年4月21日 6:06

答案

  •     Private Sub TextBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Click
            Me.TextBox1.Text = ""
            Me.TextBox1.PasswordChar = "*"c
        End Sub
    
        Private Sub TextBox1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
            If Me.TextBox1.Text.Equals(String.Empty) Then
                SetTxtColor()
            Else
                Me.TextBox1.PasswordChar = "*"c
            End If
        End Sub
        Sub SetTxtColor()
            Me.TextBox1.Text = "请输入密码"
            Me.TextBox1.ForeColor = Color.Gray
            Me.TextBox1.PasswordChar = ""
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            SetTxtColor()
        End Sub

    孟宪会
    2009年4月21日 10:00
    版主
  • 孟老师好!
    这里还有一种更简单的方法,就是利用WindowsVista提供的API

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim EM_SETCUEBANNER = &H1501
            SendMessage(TextBox1.Handle, _
                                 EM_SETCUEBANNER, _
                                 IntPtr.Zero, _
                                 System.Text.Encoding.Unicode.GetBytes("请输入密码"))
    End Sub
    


    经过测试,TextBox的PasswordChar属性被设置为 "*"c 后同样可以正常工作,达到上面的效果

    截图如下(图中提示语有点错误,忘记改回来了^_^):



    ***** 本人目前处于努力学习模式,希望大家多多伸手帮助~ *****
    2009年4月24日 15:45

全部回复

  •     Private Sub TextBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Click
            Me.TextBox1.Text = ""
            Me.TextBox1.PasswordChar = "*"c
        End Sub
    
        Private Sub TextBox1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
            If Me.TextBox1.Text.Equals(String.Empty) Then
                SetTxtColor()
            Else
                Me.TextBox1.PasswordChar = "*"c
            End If
        End Sub
        Sub SetTxtColor()
            Me.TextBox1.Text = "请输入密码"
            Me.TextBox1.ForeColor = Color.Gray
            Me.TextBox1.PasswordChar = ""
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            SetTxtColor()
        End Sub

    孟宪会
    2009年4月21日 10:00
    版主
  • 孟老师好!
    这里还有一种更简单的方法,就是利用WindowsVista提供的API

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim EM_SETCUEBANNER = &H1501
            SendMessage(TextBox1.Handle, _
                                 EM_SETCUEBANNER, _
                                 IntPtr.Zero, _
                                 System.Text.Encoding.Unicode.GetBytes("请输入密码"))
    End Sub
    


    经过测试,TextBox的PasswordChar属性被设置为 "*"c 后同样可以正常工作,达到上面的效果

    截图如下(图中提示语有点错误,忘记改回来了^_^):



    ***** 本人目前处于努力学习模式,希望大家多多伸手帮助~ *****
    2009年4月24日 15:45