水印字体,我们随处可见,比如说QQ登录界面
水印字体的作用就是美观,简洁,一个text文本框既能输入文本,又能提示信息。那么,如何在VB中实现这个功能呢?就拿我们都有接触的机房来说,怎样实现这个功能,优化登录界面?
在VB中实现水印字体,首先要弄明白水印字体的关键,在text文本框为空时,提示输入信息,当获得焦点或文本框有内容时,提示信息消失,并能显示输入信息,这就是水印字体的原理所在了。
接下来就是要思考在VB中实现水印字体的功能一共涉及到几个事件呢?经过考虑,实现水印字体一共涉及到两个事件,一个是获得焦点事件,另一个是失去焦点事件。当用户名框获得焦点时,清空文本框提示信息,显示用户输入的信息,当点击密码文本框时,用户名文本框输入的信息不能被清空。
效果如下图
当输入用户名“11”后,原用户名提示信息消失
当输入密码后,用户名依旧在,密码提示信息消失,密码输入不可见
水印字体的整体效果图如下,以机房登录界面为例
水印字体代码展示
用户名获得焦点事件
Private Sub txtUserID_GotFocus()
If (txtUserID.Text = "请输入用户名") Then
txtUserID.Text = ""
txtUserID.ForeColor = QBColor(0)
txtUserID.FontItalic = False
txtUserID.FontSize = 16
End If
End Sub
用户名失去焦点事件
Private Sub txtUserID_LostFocus()
If txtUserID.Text = "" Then
txtUserID.Text = "请输入用户名"
txtUserID.ForeColor = QBColor(8)
txtUserID.FontItalic = True
txtUserID.Font = "隶书"
txtUserID.FontSize = 16
End If
End Sub
‘密码获得焦点事件
Private Sub txtPWD_GotFocus()
If (txtPWD.Text = "请输入登录密码" Or txtPWD.Text = "") Then '获取焦点时
txtPWD.Text = "" '清空txt框
txtPWD.PasswordChar = "*" '输入的文本被隐藏
txtPWD.ForeColor = QBColor(0)
txtPWD.FontItalic = False
txtPWD.FontSize = 16
End If
End Sub
密码失去焦点事件
Private Sub txtPWD_LostFocus()
If txtPWD.Text = "" Then
txtPWD.Text = "请输入登录密码"
txtPWD.PasswordChar = ""
txtPWD.ForeColor = QBColor(8)
txtPWD.FontItalic = True
txtPWD.Font = "隶书"
txtPWD.FontSize = 16
End If
End Sub
不要以为到这就结束了,就能实现水印字体功能了,在form窗体上也是有代码的,用来显示运行窗体时的效果展示
txtUserID.Text = "请输入用户名"
txtUserID.ForeColor = QBColor(8)
txtUserID.FontItalic = True
txtUserID.Font = "隶书"
txtUserID.FontSize = 18
txtPWD.Text = "请输入登录密码"
txtPWD.ForeColor = QBColor(8)
txtPWD.FontItalic = True
txtPWD.Font = "隶书"
txtPWD.FontSize = 18
此时虽然已经实现了水印字体的功能,但并不完美,因为可能打开登录界面输入用户名框直接获得焦点,就像这样
原因是VB获得焦点的顺序是根据索引值的大小来排序的,哪个控件的索引值最小,运行程序时最先获得焦点
把命令按钮的索引值设为0即可
我已经分享完了,你学会了吗?欢迎大家评论区留言!