2017-08-12 55 views
0

我有4個列表框,每種類型(頭飾,內襯,外襯,褲子)。從列表框生成排列

一個列表框將有一個單一類型的元素(如帽子,紅,太陽帽,綠...)

我希望能夠產生從4個列表框的所有元素的所有排列,並將結果保存到文本文件中。

所以輸出,例如,將包含:

  • 帽,紅色| t恤,棕色|跳線,棕色|長褲,藍色
  • 太陽帽,藍色| t恤,棕色|夾克,橙色|短褲,灰色

我試圖看着這個post,把列表框成陣列,然後生成排列。但是,我無法將其保存到文件或列表框然後保存到文件中。

那麼如何從四個列表框中生成所有的排列呢?

回答

0

這兩個程序會做你想做的。雖然,如果這不僅僅是一個學校任務,我會建議而不是使用列表框作爲排列的數據源,爲每個對象(帽子,襯衫,跳線和褲子)創建一個班級。然後,每個人都可以擁有自己的屬性,如股票代碼,描述,顏色,大小,訂單號,供應商等等。然後,從描述,顏色和大小中爲每個項目生成詳細信息字符串,最後生成排列每個項目的細節字符串。當然,最終你會更好地使用數據庫,但這是進一步開發程序的底線。

Private Function GeneratePermutations() As List(Of String) 
    Dim permList As New List(Of String) 
    For Each hat As String In ListBox1.Items 
     For Each shirt As String In ListBox2.Items 
      For Each jumper As String In ListBox3.Items 
       For Each trousers As String In ListBox4.Items 
        permList.Add(hat & "," & shirt & "," & jumper & "," & trousers) 
       Next 
      Next 
     Next 
    Next 
    Return permList 
End Function 

Private Sub SaveFile(permlist As List(Of String), filename As String) 
    If File.Exists(filename) Then 
     Dim result As DialogResult = MessageBox.Show("File Exists, Overwrite? Y/N", "File Exists", MessageBoxButtons.YesNo) 
     If result = DialogResult.No Then 
      Exit Sub 
     End If 
    End If 
    Try 
     Using sr As New StreamWriter(filename) 
      For Each line As String In permlist 
       sr.WriteLine(line) 
      Next 
     End Using 
    Catch ex As Exception 
     MessageBox.Show("Exception:" & ex.Message & vbCrLf & "Inner Exception :" & ex.InnerException.Message) 
    End Try 
End Sub 

示例用法

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Dim permutationList As New List(Of String) 
    For i As Integer = 1 To 5 
     ListBox1.Items.Add("Hat" & i.ToString) 
     ListBox2.Items.Add("Shirt" & i.ToString) 
     ListBox3.Items.Add("Jumper" & i.ToString) 
     ListBox4.Items.Add("Trousers" & i.ToString) 
    Next 
    permutationList = GeneratePermutations() 
    SaveFile(permutationList, "K:\perms.txt") 
End Sub 

這些線..

permutationList = GeneratePermutations() 
SaveFile(permutationList, "K:\perms.txt") 

可進一步縮短至

SaveFile(GeneratePermutations, "K:\perms.txt") 

和下面的李ne就不必要了

Dim permutationList As New List(Of String)