Vb.net 合并执行相同操作的私有子节点
我有一些私人潜水艇做同样的事情(在Vb.net 合并执行相同操作的私有子节点,vb.net,visual-studio-2013,mouseevent,Vb.net,Visual Studio 2013,Mouseevent,我有一些私人潜水艇做同样的事情(在MouseEnter上更改ForeColor),因此我想知道它们是否可以合并/组合一些如何创建更少的编码 现在的示例: Private Sub FooBar_MouseEnter(sender As Object, e As EventArgs) Handles FooBar.MouseEnter FooBar.ForeColor = Color.White End Sub Private Sub FooBar2_MouseEnter(
MouseEnter
上更改ForeColor
),因此我想知道它们是否可以合并/组合一些如何创建更少的编码
现在的示例:
Private Sub FooBar_MouseEnter(sender As Object, e As EventArgs) Handles FooBar.MouseEnter
FooBar.ForeColor = Color.White
End Sub
Private Sub FooBar2_MouseEnter(sender As Object, e As EventArgs) Handles FooBar2.MouseEnter
FooBar2.ForeColor = Color.White
End Sub
是的。只需用逗号分隔处理程序
在我回答下面的评论之后,这一点变得显而易见。如果您不想组合事件,或者至少在任一表单控件触发事件时两种颜色都会改变,则需要使用If语句来检查触发了哪个表单控件。这实际上并没有为您节省太多字符编码,但我想它为您节省了一个额外的事件处理函数。例如:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click, Button2.Click
If Button1.Focused Then
Button1.BackColor = Color.Red
End If
If Button2.Focused Then
Button2.BackColor = Color.Blue
End If
End Sub
我不知道foobars是什么类型的控件,但下面是一个按钮示例:
Private Sub ButtonClick(sender As System.Object, e As System.EventArgs) handles Button1.click, Button2.Click, ... ,ButtonN.Click
Dim btn As Button = CType(sender, Button)
btn.BackColor = Drawing.Color.Red
End Sub
如果将HANDLES子句从一个移动到另一个,则将有一个处理程序。在它里面,您需要使用
sender
而不是显式的控件名,该控件名的可能重复项将在FooBar2
mouse enter事件上设置FooBar
的前景色-而不是OP想要的。这只部分回答了问题。FooBar2的前景色永远不会用这种方法设置。如果他想在一行中设置,我认为这是不可能的。你让事情变得更糟了:OP使用了MouseEnter
,这意味着其他控件可能有焦点。事实上,我们不知道FooBar
是否可以获得焦点(如果它是一个标签呢?),只有她知道她使用的任何控件是否可以聚焦。我只是给出了合并处理程序的选项,以及检查每个处理程序的可能选项。
Private Sub ButtonClick(sender As System.Object, e As System.EventArgs) handles Button1.click, Button2.Click, ... ,ButtonN.Click
Dim btn As Button = CType(sender, Button)
btn.BackColor = Drawing.Color.Red
End Sub