如何编辑此循环?

时间:2020-01-13 07:19:44

标签: vb.net loops for-loop

我写了一小段代码,但并没有达到我想要的效果。 我的目标:

我有一个3行的文本框。每行=一个产品。 我有2行的第二个文本框。每行=一种产品的1个变体。

我的结果应该是这样的:

人造草|红色

人造草。1|蓝色

暗孔板|红色

暗孔板1 |蓝色

测试孔板|红色

测试孔板1 |蓝色

我有此代码(已为您删除了所有不必要的参数):

For value1 As Integer = 0 To NumberOfArticles - 1           
    Dim Name As String = ProductTB.Lines(value1)              
    Dim Variants As String = VariantsTB.Lines(value1)

    For value2 As Integer = 1 To VariantsCountTB.Text - 1    'TextBox with number of variants                                  
        DataGridView1.Rows.Add(New String() { VariantsTB.Lines(value2 - 1)}) 
        DataGridView1.Rows.Add(New String() {VariantsTB.Lines(value2)}) 
    Next

    If value1 = NumberOfArticles Then
        Exit For
    End If
Next

名称是产品文本框的每一行。 变体是变体TextBox的每一行。

问题:它可以工作,但仅当产品有多个变体时才有效。但是我只需要2个变体,但3个产品。那么,在哪里编辑此循环?

非常感谢! :)

最诚挚的问候

1 个答案:

答案 0 :(得分:0)

正如jmcilhinney所提到的,使用lines()将文本框文本保存在数组中,然后在同一文本上进行循环

''Get all Products in array
Dim products As String() = ProductTB.Lines()
''Get all attributes in array
Dim attrributes As String() = VariantsTB.Lines()
''Create as list for result
Dim resultlist As New List(Of String)

''Loop over product
For Each prod As String In products

    ''Loop over Attributes
    For Each atr As String In attrributes
        Dim resultprd = prod & "|" & atr
        resultlist.Add(resultprd)
    Next

    '' if you want proiducts without attributes also add here 
    ''resultlist.Add("Prod")
Next