Итак, я делаю полный капитальный ремонт. Благодаря вам у меня работали месяцы! Но, как вы сказали, я должен изменить это, чтобы лучше понять. Поэтому я попытался добавить еще 2 окна с чем-то, чтобы проверить. В настоящее время программа тестирует вехи (лет - от 10 лет до 100 лет). Я редактировал код, но я не знаю, какую строку проверить, чтобы перейти от тестирования месяца к году? Таким образом, новое поле списка, которое я добавил, отображает ту же информацию, что и тест месяца, по сравнению с тем, что я пытаюсь выполнить. Так, например: John Doe 4/9/2003 появится в «10» вехе.Импорт данных из текстового файла
Private Sub lbMonth_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles lbMonth.SelectedIndexChanged
If lbMonth.SelectedIndex < 0 Then Return
lbPerson.Items.Clear()
Dim index As Integer = lbMonth.SelectedIndex
For Each ele In Birthdays(index + 1)
lbPerson.Items.Add(ele)
Next
End Sub
Private Sub lbMilestone_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles lbMilestone.SelectedIndexChanged
If lbMilestone.SelectedIndex < 0 Then Return
lbPerson2.Items.Clear()
Dim index As Integer = lbMilestone.SelectedIndex
For Each ele2 In Birthdays2(index)
lbPerson2.Items.Add(ele2)
Next
End Sub
Private Birthdays(12) As List(Of String)
Private Birthdays2(10) As List(Of String)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
'initialize the Month list
lbMonth.Items.Clear()
lbMonth.Items.Add("January")
lbMonth.Items.Add("February")
lbMonth.Items.Add("March")
lbMonth.Items.Add("April")
lbMonth.Items.Add("May")
lbMonth.Items.Add("June")
lbMonth.Items.Add("July")
lbMonth.Items.Add("August")
lbMonth.Items.Add("September")
lbMonth.Items.Add("October")
lbMonth.Items.Add("November")
lbMonth.Items.Add("December")
lbMilestone.Items.Clear()
lbMilestone.Items.Add("10")
lbMilestone.Items.Add("20")
lbMilestone.Items.Add("30")
lbMilestone.Items.Add("40")
lbMilestone.Items.Add("50")
lbMilestone.Items.Add("60")
lbMilestone.Items.Add("70")
lbMilestone.Items.Add("80")
lbMilestone.Items.Add("90")
lbMilestone.Items.Add("100")
'initialize the Lists (Instance required in order to access each list-object)
For i As Integer = 0 To 12
Birthdays(i) = New List(Of String)
Next
For j As Integer = 0 To 10
Birthdays2(j) = New List(Of String)
Next
'load some birthdays
Dim filename As String = Application.StartupPath + "\Birthday.txt"
If Not My.Computer.FileSystem.FileExists(filename) Then Throw New Exception("Filename """ + filename + """ does not exist!")
Dim fileContent As String = My.Computer.FileSystem.ReadAllText(filename)
Dim lines() As String = Split(fileContent, vbCrLf)
For Each ele As String In lines
Dim line As String = ele.Trim
Dim datePos As Integer = line.LastIndexOf(vbTab) 'find last space between name and date
If datePos < 5 Then Continue For 'if full name is less than 5 chars, then it probably not a line with an entry
Dim dateString As String = Mid(line, datePos + 2) 'all after that last space is date
Dim name As String = Mid(line, 1, datePos).Trim ' all before that last space is name
'Dim birthday As Date = Convert.ToDateTime(parts(1).Trim) ' used this conversion before, but lets try the other way
Dim birthday As Date
Try
birthday = DateTime.ParseExact(dateString, "M/d/yyyy", System.Globalization.CultureInfo.GetCultureInfo("en-US"))
Catch ex As Exception
Continue For
End Try
Dim month As Integer = birthday.Month
Dim year As Integer = CInt(Date.Now.Subtract(birthday).TotalDays/365/10)
Birthdays(month).Add(name)
Birthdays2(year).Add(name)
Next
End Sub
Я редактировал свой титул. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –
Хорошо, давайте посмотрим .. пожалуйста, переименуйте День рождения2 на соответствующее имя, может быть, что-то с деци и лет или около того. Также оригинал может быть переименован, но я думаю, что все в порядке. 2. Вместо добавления полного блока вам просто нужно добавить 1-2 строки: например, строка ** Dim month as Integer ... ** вы добавите свое определение ** Dim year ... ** прямо под month. Но измените правую сторону: ** = CInt (Date.Now.Subtract (день рождения) .TotalYears/10) **, а затем добавьте команду, чтобы добавить ее во второй список по годам, как вы уже писали. Затем измените новое для каждого итерацию через Birthday2 :) – Amegon
пояснение: после того, как вы правильно разобрали «день рождения», вы можете извлечь любую информацию, даже 5 разных, и заполнить данные в 5 разных местах. Это более полезно, чем чтение всего файла 5 раз (и 5 раз разбора).** # ** Для каждого «итерации» через коллекцию, поэтому независимо от того, что у вас есть, следующие строки кода будут выполняться для каждого отдельного элемента в этой коллекции. ** # ** Поскольку существует массив коллекций, мы используем число для доступа к одной конкретной коллекции. Чтобы показать элемент в списке, просто добавьте его в список.Items.Add (your_item) – Amegon