Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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_Winforms_Button - Fatal编程技术网

Vb.net 以编程方式单击按钮

Vb.net 以编程方式单击按钮,vb.net,winforms,button,Vb.net,Winforms,Button,我想编写一个按钮,当我单击该按钮时,它可以通过编程方式单击另一个按钮 例如,我有两个按钮名为Button1和Button2,我想做的是,在我单击Button1之后,它应该立即单击Button2。这可能吗 假设按钮1有一个名为 Button1_Click(Sender, eventarg) 如果你想在Button2中调用它,那么直接调用这个函数 Button1_Click(Nothing, Nothing) 此代码调用按钮在c中以编程方式单击事件;这正在工作:D protect void bu

我想编写一个
按钮
,当我单击该按钮时,它可以通过编程方式单击另一个
按钮


例如,我有两个按钮名为
Button1
Button2
,我想做的是,在我单击
Button1
之后,它应该立即单击
Button2
。这可能吗

假设按钮1有一个名为

Button1_Click(Sender, eventarg)
如果你想在Button2中调用它,那么直接调用这个函数

Button1_Click(Nothing, Nothing)
此代码调用按钮在c中以编程方式单击事件

;这正在工作:D

protect void button1_Click(object sender, EventArgs e){
    button2_Click(button2, null);
}

protect void button2_Click(object sender, EventeArgs e){
    //some codes here
}
对于vb.net

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)   Handles Button1.Click
    Button2_Click(Sender, e)
End Sub

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs)   Handles Button2.Click
    //some codes here
End Sub

这种情况下的最佳实践是创建一个包含所有逻辑的方法,并在两个事件中调用该方法,而不是从另一个事件调用一个事件

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        LogicMethod()

End Sub

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        LogicMethod()

End Sub

Private Sub LogicMethod()

     // All your logic goes here

End Sub

如果您需要EventArgs(e)的属性,您可以轻松地通过方法中的参数传递它,这将避免在发送者属于不同类型时出错。但在您的情况下,这不会是一个问题,因为两个发送者都是Button类型。

最佳实现取决于您正试图做什么。Nadeem_MK给你一个有效的。我知道你也可以:

  • 使用
    PerformClick()
    方法提升
    按钮2\u单击
    事件:

    Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
        'do stuff
        Me.Button2.PerformClick()
    End Sub
    
  • 将同一处理程序附加到多个按钮:

    Private Sub Button1_Click(sender As Object, e As System.EventArgs) _
        Handles Button1.Click, Button2.Click
        'do stuff
    End Sub
    
  • 使用与
    Button1\u-Click(…)
    方法相同的参数调用
    Button2\u-Click
    方法(如果您需要知道哪个是发件人,例如):


  • button2\u单击(button2,null)我喜欢这个-PerformClick方法非常优雅。谢谢请注意,
    Me.Button2.PerformClick()
    适用于附加到
    Button2.Click的任何数量的事件处理程序(例如,另一个表单可能已将此事件附加到
    AddHandler
    ),其中as
    Button2\u Click(sender,e)
    调用特定的处理程序。如果不重复使用,请填充堆栈?因为它从未完成第一次单击?我从BackgroundWorker调用此事件,并且必须将事件从Private更改为Friend,然后调用它,但它可以工作。
    Private Sub Button1_Click(sender As Object, e As System.EventArgs) _
        Handles Button1.Click, Button2.Click
        'do stuff
    End Sub
    
    Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
        'do stuff
         Button2_Click(sender, e)
    End Sub