【发布时间】:2018-09-24 21:25:21
【问题描述】:
任何朋友请更正我的脚本,TextBox 变量工作已完成,但 MaskTextBox 在此 EnterEvent 中返回 error。
我想将event-handling 的一个函数用于TextBox 和MaskTextBox
Private Sub TextBox_Enter(sender As Object, e As EventArgs) Handles OrgNameTextBox.Enter, AddressTextBox.Enter, ContactNumMaskedTextBox.Enter
Dim Tb As TextBox = CType(sender, TextBox)
Dim Mtb As MaskedTextBox = CType(sender, MaskedTextBox)
If Type = MASKTEXTBOX Then
MTb.BackColor = Color.Yellow
MTb.ForeColor = Color.Black
ElseIf Type = TextBox Then
Tb.BackColor = Color.Yellow
Tb.ForeColor = Color.Black
End If
End Sub
【问题讨论】:
-
使用GetType查看
sender的类型。 -
如果您使用从公共类派生的属性,则无需知道类型。
Control,在这种情况下。只需将sender转换为Control:CType(sender, Control).BackColor = Color.Yellow CType(sender, Control).ForeColor = Color.Black。它适用于所有“共享”的控件。事件。 -
没有理由使用单个事件处理程序,因为没有共享/公共代码!
-
@New Contributor 你在这里说的不是很清楚。有通用代码。该代码应该更改订阅该事件的任何控件的
BackColor/ForeColor。你指的是什么?。 -
@NewContributor 是正确的,如果您不打算对引发它的每个对象执行相同的操作,则不应使用通用事件处理程序。如果您要使用这样的
If...Else,那么通用事件处理程序将毫无意义。但在这种情况下,If...Else毫无意义,因为无论如何您都想做完全相同的事情,所以只需做完全相同的事情。属性名称相同的原因是它们是相同的属性,继承自Control,所以你应该使用@Jimi建议的通用类型,或者使用通用基类TextBoxBase。
标签: vb.net function textbox event-handling maskedtextbox