vb.net 中有没有办法对多个表单中的多个按钮使用相同的子程序?
Is there a way to use the same subprogram for multiple buttons across multiple forms in vb.net?
我对编程的经验相对不足,但几年来一直把它作为一门学科。今年是我在学校的最后一年,这意味着我必须承担一项重大工作。我在 VB.net 中选择了 Mastermind 游戏,但我遇到了一个我还没有学会解决的问题。在主游戏中,每次有人猜测时,我都需要通过单击四个按钮来循环显示颜色。我想重用代码,因为它不小,但我不知道如何使用多个按钮,更具体地说是多个表单。目前,该子程序在一个模块中,目的是当第二个玩家在游戏开始前选择代码时可以访问它。这是我用来循环浏览每种颜色的代码。还有另外三个像这样组成需要的四个按钮:
CodeSelect1()
BackColourRed1 = True
BackColourOrange1 = False
BackColourYellow1 = False
BackColourGreen1 = False
BackColourBlue1 = False
BackColourPurple1 = False
If BackColourRed1 = True Then
frm2PlayerChooseCode.btnCode1.BackgroundImage = My.Resources.Orange
BackColourRed1 = False
BackColourOrange1 = True
ElseIf BackColourOrange1 = True Then
frm2PlayerChooseCode.btnCode1.BackgroundImage = My.Resources.Yellow
BackColourOrange1 = False
BackColourYellow1 = True
ElseIf BackColourYellow1 = True Then
frm2PlayerChooseCode.btnCode1.BackgroundImage = My.Resources.Green
BackColourYellow1 = False
BackColourGreen1 = True
ElseIf BackColourGreen1 = True Then
frm2PlayerChooseCode.btnCode1.BackgroundImage = My.Resources.Blue
BackColourGreen1 = False
BackColourBlue1 = True
ElseIf BackColourBlue1 = True Then
frm2PlayerChooseCode.btnCode1.BackgroundImage = My.Resources.Purple
BackColourBlue1 = False
BackColourPurple1 = True
ElseIf BackColourPurple1 = True Then
frm2PlayerChooseCode.btnCode1.BackgroundImage = My.Resources.Red
BackColourPurple1 = False
BackColourRed1 = True
End If
End Sub
我考虑了一个可能的解决方案,我将在下面提出,但据我所知,它只适用于一种形式的代码。我尝试制作变量 public,但这给了我一个错误。我觉得好像我正在触及我需要做的事情的边缘,但我就是想不通:
Public Sub CodeSelect1(sender As Object, e As EventArgs) _
Handles frmEasy.btnCode1.Click, frmEasy.btnCode5.Click, btnCode9.Click, btnCode13.Click, btnCode17.Click, btnCode21.Click, btnCode25.Click, btnCode29.Click, btnCode33.Click, btnCode37.Click
Dim myButton = DirectCast(sender, Button)
总而言之,我如何调整此代码(或完全使用不同的代码)以跨多个表单使用?
感谢所有帮助,谢谢
将 button1-button5 作为参数发送到您的函数。 ParamArray 会很方便。
顺便说一句,而不是这个 IsTrue 笑话
If BackColourRed1 = True Then
你应该使用
If BackColourRed1 Then
如果你使用一些 BackColor As Color
变量,你的生活会更轻松,这样你就不必重新发明轮子。
如果您将 sub 更改为以下内容,您将能够将按钮作为参数传递给它。然后,在每个表单的每个按钮单击处理程序中,只需添加以下代码。
CodeSelect1(CType(sender, Button))
这是更新后的子
Friend Sub CodeSelect1(btn As Button)
BackColourRed1 = True
BackColourRed1 = False
BackColourYellow1 = False
BackColourYellow1 = False
BackColourBlue1 = False
BackColourPurple1 = False
If BackColourRed1 Then
btn.BackgroundImage = My.Resources.Orange
BackColourRed1 = False
BackColourOrange1 = True
ElseIf BackColourOrange1 Then
btn.BackgroundImage = My.Resources.Yellow
BackColourOrange1 = False
BackColourYellow1 = True
ElseIf BackColourYellow1 Then
btn.BackgroundImage = My.Resources.Green
BackColourYellow1 = False
BackColourGreen1 = True
ElseIf BackColourGreen1 Then
btn.BackgroundImage = My.Resources.Blue
BackColourGreen1 = False
BackColourBlue1 = True
ElseIf BackColourBlue1 Then
btn.BackgroundImage = My.Resources.Purple
BackColourBlue1 = False
BackColourPurple1 = True
ElseIf BackColourPurple1 Then
btn.BackgroundImage = My.Resources.Red
BackColourPurple1 = False
BackColourRed1 = True
End If
End Sub
我对编程的经验相对不足,但几年来一直把它作为一门学科。今年是我在学校的最后一年,这意味着我必须承担一项重大工作。我在 VB.net 中选择了 Mastermind 游戏,但我遇到了一个我还没有学会解决的问题。在主游戏中,每次有人猜测时,我都需要通过单击四个按钮来循环显示颜色。我想重用代码,因为它不小,但我不知道如何使用多个按钮,更具体地说是多个表单。目前,该子程序在一个模块中,目的是当第二个玩家在游戏开始前选择代码时可以访问它。这是我用来循环浏览每种颜色的代码。还有另外三个像这样组成需要的四个按钮:
CodeSelect1()
BackColourRed1 = True
BackColourOrange1 = False
BackColourYellow1 = False
BackColourGreen1 = False
BackColourBlue1 = False
BackColourPurple1 = False
If BackColourRed1 = True Then
frm2PlayerChooseCode.btnCode1.BackgroundImage = My.Resources.Orange
BackColourRed1 = False
BackColourOrange1 = True
ElseIf BackColourOrange1 = True Then
frm2PlayerChooseCode.btnCode1.BackgroundImage = My.Resources.Yellow
BackColourOrange1 = False
BackColourYellow1 = True
ElseIf BackColourYellow1 = True Then
frm2PlayerChooseCode.btnCode1.BackgroundImage = My.Resources.Green
BackColourYellow1 = False
BackColourGreen1 = True
ElseIf BackColourGreen1 = True Then
frm2PlayerChooseCode.btnCode1.BackgroundImage = My.Resources.Blue
BackColourGreen1 = False
BackColourBlue1 = True
ElseIf BackColourBlue1 = True Then
frm2PlayerChooseCode.btnCode1.BackgroundImage = My.Resources.Purple
BackColourBlue1 = False
BackColourPurple1 = True
ElseIf BackColourPurple1 = True Then
frm2PlayerChooseCode.btnCode1.BackgroundImage = My.Resources.Red
BackColourPurple1 = False
BackColourRed1 = True
End If
End Sub
我考虑了一个可能的解决方案,我将在下面提出,但据我所知,它只适用于一种形式的代码。我尝试制作变量 public,但这给了我一个错误。我觉得好像我正在触及我需要做的事情的边缘,但我就是想不通:
Public Sub CodeSelect1(sender As Object, e As EventArgs) _
Handles frmEasy.btnCode1.Click, frmEasy.btnCode5.Click, btnCode9.Click, btnCode13.Click, btnCode17.Click, btnCode21.Click, btnCode25.Click, btnCode29.Click, btnCode33.Click, btnCode37.Click
Dim myButton = DirectCast(sender, Button)
总而言之,我如何调整此代码(或完全使用不同的代码)以跨多个表单使用? 感谢所有帮助,谢谢
将 button1-button5 作为参数发送到您的函数。 ParamArray 会很方便。
顺便说一句,而不是这个 IsTrue 笑话
If BackColourRed1 = True Then
你应该使用
If BackColourRed1 Then
如果你使用一些 BackColor As Color
变量,你的生活会更轻松,这样你就不必重新发明轮子。
如果您将 sub 更改为以下内容,您将能够将按钮作为参数传递给它。然后,在每个表单的每个按钮单击处理程序中,只需添加以下代码。
CodeSelect1(CType(sender, Button))
这是更新后的子
Friend Sub CodeSelect1(btn As Button)
BackColourRed1 = True
BackColourRed1 = False
BackColourYellow1 = False
BackColourYellow1 = False
BackColourBlue1 = False
BackColourPurple1 = False
If BackColourRed1 Then
btn.BackgroundImage = My.Resources.Orange
BackColourRed1 = False
BackColourOrange1 = True
ElseIf BackColourOrange1 Then
btn.BackgroundImage = My.Resources.Yellow
BackColourOrange1 = False
BackColourYellow1 = True
ElseIf BackColourYellow1 Then
btn.BackgroundImage = My.Resources.Green
BackColourYellow1 = False
BackColourGreen1 = True
ElseIf BackColourGreen1 Then
btn.BackgroundImage = My.Resources.Blue
BackColourGreen1 = False
BackColourBlue1 = True
ElseIf BackColourBlue1 Then
btn.BackgroundImage = My.Resources.Purple
BackColourBlue1 = False
BackColourPurple1 = True
ElseIf BackColourPurple1 Then
btn.BackgroundImage = My.Resources.Red
BackColourPurple1 = False
BackColourRed1 = True
End If
End Sub