如何将变量添加到基于数字向上控件的列表框中



我正在为列表框创建一个随机骰子生成器,我有一个 numericUpDown 控件,用于表示每种类型的骰子将掷出多少个。我当前的代码如下:

RollValue = rand.Next(4) + 1
lstRoller.Items.Add(numD4UpDown.Value.ToString() & "D4 - " & RollValue.ToString())

其中 lstRoller 是我要添加骰子的列表框,Roll Value 是我的变量,numD4UpDown 是我的 NumericUpDown。这适用于单个骰子滚动,但我希望能够在我的上下控件中为每个大于 1 的数字添加一个额外的骰子,而不必为每个数字上下控件可能性编写 if 语句。

理想情况下,它看起来像这样:

RollValue = rand.Next(4) + 1
lstRoller.Items.Add(numD4UpDown.Value.ToString() & "D4 - " & RollValue.ToString() & If numD4UpDown.Value(Pseudocode past this point).Count > 1 then do create variable = rand.Next(4) + 1 loop until NumberOfVariables = numD4UpDown.Value.Count)

有什么方法可以让我不必创建单独的 If 语句?

在我的上下控件中,为每个大于 1 的数字添加一个额外的骰子辊

因此,掷骰子的总数基本上等于数字Updown中的数字。

带 For 循环

Private rand As New Random()
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    For i As Integer = 1 To Convert.ToInt32(numD4UpDown.Value)
        Dim rollValue = rand.Next(4) + 1
        lstRoller.Items.Add(String.Format("{0}D4 - {1}", i, rollValue))
    Next
End Sub

如果要将它们全部放在一行上,可以将 For 循环替换为

lstRoller.Items.Add(
    Enumerable.Range(1, Convert.ToInt32(numD4UpDown.Value)).
    Select(
        Function(i)
            Dim RollValue = rand.Next(4) + 1
            Return String.Format("{0}D4 - {1}", i, RollValue)
        End Function).
        Aggregate(Function(s1, s2) s1 & " " & s2))

最新更新