在我在 VB.NET 中创建的 Windows 窗体中,对于其中一个文本框,我使用的代码模拟文本框中的占位符,即默认情况下在文本框中的文本,并且当用户点击文本框时,文本会消失以允许用户编写他的文本。如果用户没有写任何东西并点击了文本框,文本会重新出现。
如您所见,占位符向右对齐。但是,根据我的代码,当用户单击文本框(文本框获得焦点)时,要输入的文本现在应该向左对齐。这是我的代码:
Private Sub TextBox_ProjectName_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox_ProjectName.GotFocus
If TextBox_ProjectName.Text = "(required)" Then
TextBox_ProjectName.Text = ""
End If
TextBox_ProjectName.ForeColor = Color.Black
TextBox_ProjectName.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular)
TextBox_ProjectName.TextAlign = HorizontalAlignment.Left
End Sub
当文本框失去焦点(用户点击文本框外)时,如果用户没有在文本框中输入任何内容,占位符会重新出现。
代码:
Private Sub TextBox_ProjectName_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox_ProjectName.LostFocus
If TextBox_ProjectName.Text = "" Then
TextBox_ProjectName.Text = "(required)"
TextBox_ProjectName.ForeColor = Color.Gray
TextBox_ProjectName.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Italic)
TextBox_ProjectName.TextAlign = HorizontalAlignment.Right
End If
End Sub
但是,我在TextBox_ProjectName.TextAlign = HorizontalAlignment.Right
代码上遇到以下错误。这是在 Visual Basic 2008 中。
在 Visual Basic 2010 中,我遇到 CallbackOnCollectedDelegate 错误。
我相信这两个版本都在投射相同的错误。
任何人都可以帮助我吗?如果是这样,请包含有关什么是委托、什么是回调以及什么是垃圾收集器的信息。
修改了代码,删除了问题,但又出现了另一个问题。
现在,在我处理文本框的 GotFocus 的子例程中,我尝试将If
语句之外的代码放在...里面,如下所示:
Private Sub TextBox_ProjectName_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox_ProjectName.GotFocus
If TextBox_ProjectName.Text = "(required)" Then
TextBox_ProjectName.Text = ""
TextBox_ProjectName.ForeColor = Color.Black
TextBox_ProjectName.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular)
TextBox_ProjectName.TextAlign = HorizontalAlignment.Left
End If
End Sub
处理文本框的 LostFocus 的子程序保持不变。
Private Sub TextBox_ProjectName_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox_ProjectName.LostFocus
If TextBox_ProjectName.Text = "" Then
TextBox_ProjectName.Text = "(required)"
TextBox_ProjectName.ForeColor = Color.Gray
TextBox_ProjectName.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Italic)
TextBox_ProjectName.TextAlign = HorizontalAlignment.Right
End If
End Sub
我现在遇到的问题是在获得焦点的文本框上,文本没有向左对齐并且没有获得“常规”字体样式。
但是,如果我TextBox_ProjectName.TextAlign = HorizontalAlignment.Right
在子例程中注释代码LostFocus
,则文本成功地向左对齐并变为“常规”样式,但随后,在文本框失去焦点且用户未输入任何内容时,占位符现在显然已对齐到左边,这使得它很难看,因为以前它是向右对齐的。
这里有什么问题?为什么没有评论时文本不左对齐?
我知道我在这里发布了一个很长的问题。对不起。但是,如果只解决问题的第一部分,我会很高兴。第二部分可以作为补充。
任何帮助将不胜感激。谢谢你。