2015-10-07 34 views
0

我正在制作一个需要登录系统的程序。我想要做的是有一个包含单词'用户名'的文本框,当用户点击它时,'用户名'文本被覆盖。例如,Spotify的使用它自己的登录屏幕上:如何启用覆盖文本框中的文本?

enter image description here

我的问题是,我该怎么办呢?

+0

我想看看像Infragistics这样的第三方控件。开箱即用的.NET控件无法做到这一点。 –

+0

在Winform上实现它会非常容易。基本上,您可以将文本框的初始文本设置为前缀为灰色的“用户名”。当用户选择文本框时,文本将消失,前景色将变为黑色。 – ChicagoMike

+0

请参阅[WinForms中的水印文本框](http://stackoverflow.com/q/4902565/719186)。它也被称为“提示横幅”或“幽灵文本”。 – LarsTech

回答

0

将用于用户名的TextBoxText属性设置为字符串"Username"。然后,在TextBoxClick事件中,将其更改为空白字符串。像这样:

Private Sub TextBox1_Click(sender As Object, e As EventArgs) Handles TextBox1.Click 
    TextBox1.Text = "" 
End Sub 

编辑: 作为@LarsTech提到的,这并没有解决,如果用户切换到TextBox。如果你想以考虑过,使用TextBoxEnter事件,而不是:

Private Sub TextBox1_Enter(sender As Object, e As EventArgs) Handles TextBox1.Enter 
    TextBox1.Text = "" 
End Sub 
0

我同意,使用Textbox1.Enter是最简单的解决方案。在顶部,你还可以赶上没有通过TextBox1.Leave进入这样的

Private Sub TextBoxLeaveHandle() Handles TextBox1.Leave 
    If TextBox1.Text = "" Then 
     TextBox1.Text = "Username" 
    End If 
End Sub 

文本的情况下,有时也可以是使用TextBox.SelectAll()功能非常有用,因为它不会立即(从名字明显)删除整个文本,但选择整个文本,所以你可以用你的第一个按键覆盖它。