使用 VB.Net 的 GhostText [英] GhostText using VB.Net
问题描述
大家好,我尝试在文本框上使用标签创建一个幻影.我正在使用 VB.Net2005.我用这个代码完成了这个:
Hello guys, I tried to create a ghost text using Labels over the Textboxes. I am using VB.Net2005. I accomplished this with this code:
Public Class frmDataEntry
Private Sub PhantomTextLastName()
If txtLastName.Text = "" Then
lblLastName.Visible = True
Else
lblLastName.Visible = False
End If
End Sub
Private Sub PhantomTextFirstName()
If txtFirstName.Text = "" Then
lblFirstName.Visible = True
Else
lblFirstName.Visible = False
End If
End Sub
Private Sub PhantomTextMiddleInitial()
If txtMiddleInitial.Text = "" Then
lblMiddleInitial.Visible = True
Else
lblMiddleInitial.Visible = False
End If
End Sub
Private Sub txtLastName_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtLastName.Click
lblLastName.Text = "Last Name"
End Sub
Private Sub txtLastName_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtLastName.KeyDown
PhantomTextLastName()
End Sub
Private Sub txtLastName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtLastName.TextChanged
PhantomTextLastName()
End Sub
Private Sub lblLastName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblLastName.Click
txtLastName.Focus()
End Sub
Private Sub txtFirstName_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtFirstName.Click
lblFirstName.Text = "First Name"
End Sub
Private Sub txtFirstName_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtFirstName.KeyDown
PhantomTextFirstName()
End Sub
Private Sub txtFirstName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFirstName.TextChanged
PhantomTextFirstName()
End Sub
Private Sub lblFirstName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblFirstName.Click
txtFirstName.Focus()
End Sub
Private Sub lblMiddleInitial_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblMiddleInitial.Click
txtMiddleInitial.Focus()
End Sub
Private Sub txtMiddleInitial_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtMiddleInitial.Click
lblMiddleInitial.Text = "Middle I."
End Sub
Private Sub txtMiddleInitial_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtMiddleInitial.KeyDown
PhantomTextMiddleInitial()
End Sub
Private Sub txtMiddleInitial_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtMiddleInitial.TextChanged
PhantomTextMiddleInitial()
End Sub
End Class
有什么方法可以减少此代码,以便当我尝试添加另一个文本框时,我将永远不必重新键入一堆代码.我有使用 Module 和 Class 的基本知识,但我真的不知道如何将它应用于这个项目.我是新手,如果您有任何可以帮助我解决此问题的教程,请给我 d 链接.提前致谢 &上帝保佑.
Is there any way to reduce this code, so that when I try to add another Textboxes I'll never have to retype a bunch of codes. I have basic knowledge n using Module and Class but I really don't have any idea on how to apply this with this project. I am a newbie, and if you have any tutorial that could help me solve this problem, kindly give me d link. Thanks in advance & God bless.
推荐答案
创建用户控件.用户控件背后的代码可能类似于:
Create a usercontrol. The code behind your usercontrol might be something like:
Public Class GhostTextbox
Private _ghostText As String
Public Property GhostText As String
Get
Return _ghostText
End Get
Set(ByVal Value As String)
_ghostText = Value
End Set
End Property
Public Property ActualText As String
Get
Return Me.TextBox1.Text
End Get
Set(ByVal Value As String)
Me.TextBox1.Text = Value
End Set
End Property
Private Sub PhantomText()
If TextBox1.Text = "" Then
Label1.Visible = True
Else
Label1.Visible = False
End If
End Sub
Private Sub TextBox1_Click(sender As Object, e As System.EventArgs) Handles TextBox1.Click
Label1.Text = GhostText
End Sub
Private Sub TextBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
PhantomText()
End Sub
Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
PhantomText()
End Sub
Private Sub GhostTextbox_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Label1.Text = GhostText
End Sub
End Class
然后,使用这个自定义控件而不仅仅是一个 TextBox
.您需要做的就是为您添加的每个新控件设置 GhostText
属性,而不是重新执行相同的逻辑.
Then, use this custom control instead of just a TextBox
. All you need to do is set the GhostText
property for each new control you add instead of redoing the same logic over again.
这篇关于使用 VB.Net 的 GhostText的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!