2013-04-09 30 views
1

我有一些代碼收集所有的文本框並將它們存儲爲一個數組列表,然後所有的組合框存儲爲第二個列表,但這是「工作」,但它似乎是把盒子2-10從上到下,它們是底部的第一個盒子,並且它說盒子1,2,3,4,5被填充6-10不是,你將得到2,3,4,5,然後是5空白線,然後框1在底部。 我在想我怎麼能阻止這個?即讓它忽略空盒子。一旦我到15代表我會張貼這個項目的一些圖片,並要求在各個領域的幫助很多我掙扎。在使用中的代碼如下 FORM 2 - 收集表格2放入列表框表格3

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    Dim f As New Form3() 
    Dim allValues As New List(Of String)() 
    For Each xTextBoxes As TextBox In Me.Controls.OfType(Of TextBox)() 
     f.i.AddRange(xTextBoxes.Text.Split(",")) 
    Next 
    Dim allValues2 As New List(Of String)() 
    For Each xComboBoxes As ComboBox In Me.Controls.OfType(Of ComboBox)() 
     f.l.AddRange(xComboBoxes.Text.Split(",")) 
    Next 
    f.ShowDialog() 

End Sub 

的打印輸出在表格3

Public i As New List(Of String)() 
Public l As New List(Of String)() 

Private Sub Form3_Load(sender As Object, e As EventArgs) Handles Me.Load 
    ListBox1.Items.AddRange(i.ToArray()) 
    ListBox2.Items.AddRange(l.ToArray()) 
End Sub 

如果i具有填充了111111111然後222222222文本框1,2,3,4然後33,33和44,44 這是它是如何在列表框

顯示33
(空白行)
(空白行)
(空白行)
(空白行)
(空白行)
(空白行)

回答

2

我會建議調用時Split方法,像這樣使用RemoveEmptyEntries選項:

f.i.AddRange(xTextBoxes.Text.Split({","}, StringSplitOptions.RemoveEmptyEntries)) 

如果由於某種因此,不工作,我只是檢查值在使用它之前是空的:

If xTextBoxes.Text <> String.Empty Then 
    f.i.AddRange(xTextBoxes.Text.Split(",")) 
End If 

順便問一下,你是不是實際使用allValuesallValues2任何地方...

+0

你正在迅速成爲我的英雄! 不知道如果我討厭你呢。但如果你知道一個閱讀所有這些東西的好地方,這可能有助於減少我纏身的程度? 我還有一個關於我的程序的這一部分的問題...現在! 哦,僅供參考,第一個建議不喜歡「,」c部分,不會構建該程序,然後拋出一個合適的,如果我刪除了c太:)第二部分已經修復了所有我得到的問題 – 2013-04-10 07:59:13

+0

糟糕。對於那個很抱歉。我修正了第一個例子。單個字符串(例如'「,」c「)之後的'c'表示它是一個字符而不是一個字符串。在其他C-ish語言中,例如C#,你可以使用單引號來表示字符和雙引號(例如''例如字符串「'表示字符串,'a'表示字符),但在VB.NET中,它更容易混淆,因爲它使用了雙引號,但是使用'c'後綴來表示字符(例如「」字符串爲「字符串」,字符爲「a」)。 – 2013-04-10 12:21:16

+0

字符的'c'後綴至少與後綴用於其他類型文字的方式一致,例如D代表'Decimal'文字(例如'1.3D'),'F'代表'Single '文字(例如'1.3F')。 – 2013-04-10 12:25:38

0

您可以使用一個for-loop或者for-​​each而不是addrange,並且只傳輸非空項,或者迭代整個列表並刪除空列。

另外,您可能希望將表單創建更改爲單例,因此請確保您嘗試從form3訪問的數據與正在運行的數據相同。

是錯誤的編碼還是你需要數組列表?也許你可以解釋一下? (這不是直接的解決方案,而且還可以幫助你提高你的編碼位)