Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 合并执行相同操作的私有子节点_Vb.net_Visual Studio 2013_Mouseevent - Fatal编程技术网

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