如何设置两个数值最多的上下控件

时间:2018-12-31 02:37:48

标签: vb.net

我当时正在制作电影院预订软件,选择座位后,它将我选择的座位数存储在一个整数计数器中。

我有两个NumericUpDown控件:nudAdult和nudKids

我的问题是我必须确保两个NumericUpDown控件的最大值都不能超过seatNum计数器。

例如:如果我选择的座位数为3,则将nudAdult和nudKids的两个值加在一起时不能超过3。所以nudAdult可以是2,nudKids可以是1,我不能再增加了。

如果有人能帮助我或给我一些解决这个问题的指示,我将不胜感激。

谢谢您的帮助。

编辑:这可能是错误的方法,但可以扩展

Private Sub nudAdult_ValueChanged(sender As Object, e As EventArgs) Handles nudAdult.ValueChanged
    totalCount = Convert.ToInt32(nudAdult.Value) + Convert.ToInt32(nudKids.Value)
    Call CheckIfExceed(nudAdult)
End Sub

Private Sub nudKids_ValueChanged(sender As Object, e As EventArgs) Handles nudKids.ValueChanged
    totalCount = Convert.ToInt32(nudAdult.Value) + Convert.ToInt32(nudKids.Value)
    Call CheckIfExceed(nudKids)
End Sub

Private Sub CheckIfExceed(c As NumericUpDown)
    Dim left As Integer

    If totalCount <= seatCounter Then
        left = seatCounter - totalCount
        c.Maximum = totalCount + left
    Else
        c.Maximum = c.Value - 1
    End If
End Sub

1 个答案:

答案 0 :(得分:1)

您无需检查任何内容。正如我所说,考虑一下身体问题。假设您有10个球和两个袋子,可以将球放入袋子。您可以在每个袋中放入的最大球数显然是该袋中的球数加上两个袋中尚未存在的球数。这意味着,当您开始并且两个袋子都空了时,每个袋子的最大值是球的总数。繁荣!现在,您知道需要将每个Maximum的{​​{1}}设置为开始时的总座位数。

现在,当您将一个球放在一个袋子中时,可以放在另一个袋子中的最大球数显然会减少一个。繁荣!您现在知道,NumericUpDown中一个控件的Value发生变化时,您需要在相反的方向上将另一个NumericUpDown进行相同的更改。

看看!考虑到类似的物理问题,解决问题的时间不到一分钟。

Maximum