2012-08-11 84 views
0

我有一個問題,我需要理清在列表框中的項目,我知道該怎麼做,但問題是,我的列表框整理出這樣排序列表框,但保持項目組合在一起

人1姓名
第1個人姓
人1日
第1個人性別
第1個人地址
人2姓名
人2姓
人2日期
人2性別
人2地址
隨着每個值在一個新的行。 我想要的是將每個人的5個細節放在一起並按日期排序,但我不知道該怎麼做,因爲我知道的唯一排序細節會混合所有數據。

Private Sub btnSortDate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSortDate.Click 
    Dim arr As New ArrayList 
    Dim iLp As Integer 

    arr.AddRange(lstFDisplay.Items) 

    arr.Sort() 

    lstFDisplay.Items.Clear() 

    For iLp = 0 To arr.Count - 1 
     lstFDisplay.Items.Add(arr(iLp)) 
    Next iLp 
End Sub 

回答

0

EDIT2:您需要你的邏輯(你的人,日期)從演示文稿(你正在展示用戶通過在列表框中把什麼)分開。你應該總是避免的東西是顯示一些東西(例如,顯示人員列表),然後讀回並試圖理解它。

Module MyForm 
     ' Keep our dates & people in this dictionary 
     ' Because it's a SortedDictionary, it'll keep them sorted by key 
     '            key,  value 
     Public personDictionary As New SortedDictionary(Of DateTime, Person) 

     Public Sub New() 
      InitializeComponent() 
      ' Call CreatePeople() to fill our dictionary when the form is made 
      CreatePeople() 
      ' Then call FillListBox() to fill our listbox from that dictionary 
      FillListBox() 
     End Sub 

     Private Sub CreatePeople() 
      ' Make your persons and dates here 
      Dim a = New Person(...) 
      Dim dateA = New DateTime(2012,2,3) 

      ' Keep them in our internal dictionary 
      ' .Add(..) takes our key (a DateTime) and a value (a Person) 
      personDictionary.Add(dateA, a) 
     End Sub 

     Private Sub FillListBox() 
      lstFDisplay.Clear() 

      ' Here we do something 'For Each' item in the dictionary 
      ' The dictionary is filled with 'pairs' of key|value (DateTime|Person) 
      For Each pair In personDictionary 
       DateTime date = pair.Key 
       Person person = pair.Value 
       'Use this data to add items to our UI 
       lstFDisplay.Items.Add("Name: "&person.Name 
       lstFDisplay.Items.Add("Address: "&person.Address 
       lstFDisplay.Items.Add(person.Name&" registered on "&date) 
      Next 
     End Sub 

如果要添加或從字典中刪除的人,只是.Add(..).Remove(..)並再次調用FillListBox()刷新UI。通過將值保存在代碼本身中,而不是每次都從列表框重新讀取它,您可以更好地控制如何處理這些信息。

+0

謝謝你的回答,我認爲你在vb上比我有更多的知識,所以謝謝你把我推向了正確的方向。 – nurafh 2012-08-11 14:34:45

+0

這是一個自定義類,因爲我認爲這可能是需要的。 '公共類Person 公共屬性名字作爲字符串 公共屬性名字作爲字符串 公共財產性別作爲字符串 公共財產applicationdate截止日期 公共物業地址作爲字符串 的Public Sub New(BYVAL名字作爲字符串,可選BYVAL姓氏的String = 「None」,可選ByVal gender As String =「None」,可選ByVal applicationdate As Date = Nothing,可選ByVal地址爲String =「None」)' – nurafh 2012-08-11 14:45:02

+0

'_firstname = firstname _lastname = lastname _gender = gender _applicationdate = applicationdate _address = address End Sub Public Overrides Function ToString()As String 返回String.Format(「{0},{1},{2}」,Me.lastname,Me.firstname,Me.applicationdate) End Function End Class' – nurafh 2012-08-11 14:46:07

相關問題