我有一个问题,我需要在列表框中整理项目,我知道该怎么做,但问题是,我的列表框是这样排序的
人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 :(得分: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()
以刷新您的用户界面。通过将值保留在代码本身中,而不是每次都从列表框中重新读取它,您可以更好地控制处理该信息的方式。