多个按钮如果有其他条件

时间:2014-10-03 15:28:11

标签: vb.net

我需要一些帮助来制定一个条件,即如果用户选择或点击多个按钮,就会出现一个MsgBox("你只能为每个进程选择一个座位")。 ..场景是这样的:我有5个按钮(A3,A4,A5,A6,A7),下面的代码显示,如果用户选择任何按钮,按钮的BackColor将为红色,因此IF用户将选择或再次单击作为用户的第二选择,然后会出现MsgBox("您只能为每个进程选择一个席位")。什么代码适合条件?我将非常感谢任何帮助.....非常感谢你!!!:'(

Private Sub A3_Click(sender As Object, e As EventArgs) Handles A3.Click, A4.Click, A5.Click, A6.Click, A7.Click

    sender.BackColor = Color.Red

    If sender ......  Then
          MsgBox()
    End If
End Sub

2 个答案:

答案 0 :(得分:1)

因此,假设您在表单上有5个按钮,让用户从中选择1。

首先进行按钮点击事件。 " Private Sub Check_Button(发件人作为对象,e作为EventArgs)"
然后将您想要使用的所有按钮的点击添加到" Check_Button" enter image description here

在这种情况下,你需要做3件事。

  1. 检查用户是否要取消选择他选择的按钮。"也许他改变了主意"
    在第一部分中,我检查sender.backColor = Color.Red"如果是,则将其设为白色"

  2. 检查是否已选择按钮 在第二部分中,我制作一个列表(按钮)"使用您想要使用的按钮" 并使用for循环检查是否有一个红色背景的按钮。 如果找到一个,它将使BError = True

  3. 选择一个按钮 在最后一部分,它将检查BError是真还是假 如果它的True将显示msgbox,如果它为False,它将使发送者的BackGround collor变红。

    Private Sub Check_Button(sender As Object, e As EventArgs) Handles A5.Click, A4.Click, A3.Click, A2.Click, A1.Click
    
    Dim BSender As Button = CType(sender, Control)
    If BSender.BackColor = Color.Red Then
        BSender.BackColor = Color.White
        Return
    End If
    
    Dim Buttons As New List(Of Button) From {A1, A2, A3, A4, A5}'Buttons you want to check
    Dim BError As Boolean = False
    For i = 0 To Buttons.Count - 1
        If Buttons(i).BackColor = Color.Red Then
            BError = True
        End If
    Next
    If BError = False Then
        sender.BackColor = Color.Red
    Else
        MsgBox("You can only select one seat for every Process")
    End If
    
    End Sub
    

答案 1 :(得分:0)

    Dim btn As New Button
    Dim haveFound As Boolean = False
    For index = 3 To 7
        btn = DirectCast(Me.Controls.Find("A" + index.ToString, True).FirstOrDefault(), Button)
        If btn.BackColor = Color.Red Then
            MsgBox("You can only select one seat for every Process")
            haveFound = True
        End If
    Next
    If haveFound = False Then
        sender.BackColor = Color.Red
    End If

这是你可以做到的一种方式。

基本上,它搜索每个元素是否有红色背景然后输出你的消息并将布尔变量'haveFound'更改为true。如果此变量在搜索结束时仍为false,则会将背景颜色设置为红色。

玩得开心!

编辑:在3到7之间添加“B”组按钮(记住为它们添加处理程序

    Dim btn As New Button
    Dim haveFound As Boolean = False
    For index = 3 To 7
        btn = DirectCast(Me.Controls.Find("A" + index.ToString, True).FirstOrDefault(), Button)
        If btn.BackColor = Color.Red Then
            MsgBox("You can only select one seat for every Process")
            haveFound = True
        End If
        btn = DirectCast(Me.Controls.Find("B" + index.ToString, True).FirstOrDefault(), Button)
        If btn.BackColor = Color.Red Then
            MsgBox("You can only select one seat for every Process")
            haveFound = True
        End If
    Next
    If haveFound = False Then
        sender.BackColor = Color.Red
    End If