如何用循环替换一些相似的代码块?

How to replace a number of similar code blocks with a loop?

提问人:Hi Aya 提问时间:10/3/2016 最后编辑:halferHi Aya 更新时间:11/17/2023 访问量:48

问:

你能帮我循环这个吗?我开始学习 vb.net 语言

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If Button1.BackColor = Color.Red Then
        Button1.BackColor = Color.Pink
    End If
    If Button2.BackColor = Color.Red Then
        Button2.BackColor = Color.Pink
    End If
    If Button3.BackColor = Color.Red Then
        Button3.BackColor = Color.Pink
    End If
End Sub
vb.net

评论

3赞 jmcilhinney 10/3/2016
你将不得不提供比这更好的解释。“循环这个”没有任何意义。请提供完整而清晰的解释,说明您要完成的任务。当我们不必猜测时,我们将非常乐意提供帮助。
0赞 jmcilhinney 10/3/2016
此外,问题的标题应该是简明扼要的摘要,而问题本身应包含所有相关细节。你刚刚开始学习这门语言的事实与这两种情况都无关紧要。只是事实马。
0赞 David Wilson 10/3/2016
对不起,您的问题不清楚,请看如何提问,了解如何提出好问题

答:

0赞 Malcor 10/3/2016 #1

您可以通过两种方式(可能还有其他方式)两种方式(可能还有其他方法)都使用 Foreach 循环,该循环遍历对象集合。

第一个遍历窗体上按钮的匿名数组。然后同样的条件。很简单,如果添加另一个按钮,请将其添加到数组的末尾。

    For each btn As Button In {Button1, Button2, Button3, Button4}
        If btn.BackColor = Color.Red Then
            btn.BackColor = Color.Pink
        End If
    Next

下一个方法执行几乎相同的操作,但您不必手动将按钮添加到数组中。它假定您要对窗体上的每个按钮执行逻辑。它采用当前窗体上的所有控件(按钮、文本框),如果它是按钮,则将其转换为按钮对象,然后执行相同的条件。

    For each btn As Control In Me.Controls
        If btn.GetType() = GetType(Button) then
            Dim myButton As Button = CType(btn, Button)
            If myButton.BackColor = Color.Red Then
                myButton.BackColor = Color.Pink
            End If
        End If
    Next