首页 > 解决方案 > Visual Basic:如何创建子重置按钮

问题描述

我试图创建一个允许我重置按钮的子。我将有很多按钮,并且只想在按钮中调用一个 sub 以使我的代码更清晰。有人可以指导我如何做到这一点我真的很感激

Private Sub Button2_MouseDown(sender As Object, e As MouseEventArgs) Handles Button2.MouseDown, Button1.MouseDown
    If e.Button = Windows.Forms.MouseButtons.Right Then

        btn = DirectCast(sender, Button)
        ButtonReset()

    End If


End Sub
Public Sub ButtonReset()
    Select Case MsgBox("Do you want to reset?", MsgBoxStyle.YesNoCancel, "caption")
        Case MsgBoxResult.Yes
            btn2_Count = 0
            MyInterval = 1
            Button2.Text = "Station 2"
            Button2.BackColor = DefaultBackColor
        Case MsgBoxResult.Cancel
            Exit Sub
        Case MsgBoxResult.No
            Exit Sub
    End Select
End Sub

标签: vb.net

解决方案


正如上面提到的@jmcilhinney,不需要使用Select Case.

我会在这里写一个小例子,可能会有所帮助。但是,我不会包括

btn2_Count = 0
MyInterval = 1

因为我不是 100% 他们是什么。

还有一件事很突出。您似乎将 btn 作为按钮(其中一个按钮)然后调用硬编码为 button2 的 sub。似乎打败了整个观点。

根据我的回答,我假设您想要 button1 的“Station 1”和 button2 的“Station 2”?您可以将一个数字预加载到按钮的“.Tag”属性中,并使用它来确定正在处理哪个按钮

例如,类似:

Private Sub Button_MouseDown(sender As Object, e As MouseEventArgs) Handles Button1.MouseDown, Button2.MouseDown
    If e.Button = Windows.Forms.MouseButtons.Right Then
        If MessageBox.Show("Do you want to reset?", "Caption", MessageBoxButtons.OKCancel) = DialogResult.OK Then
            Dim btn As Button = DirectCast(sender, Button)
            btn.Text = String.Format("Station {0}", btn.Tag.ToString)
            btn.BackColor = DefaultBackColor
        End If
    End If
End Sub

推荐阅读