Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
5 / 5 / 0
Регистрация: 08.05.2011
Сообщений: 215
1

Сортировка названий месяцев в ListBox

19.03.2014, 18:34. Показов 1624. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Есть два ListBox, один из них с предустановленными месяцами (Января, Февраль, и т.п.). Другой из них - пустой. Выбираю из первого строки и переношу во второй. Далее хочу отсортировать чтобы был естественный порядок месяцев. Кто что может подсказать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.03.2014, 18:34
Ответы с готовыми решениями:

Чтение названий всех папок из папки "Profiles" и вывод этих названий в ListBox
Мне надо устроить выбор профиля для загрузки игры. Все файлы одного профиля хранятся в папке с...

Нужна идея. Сортировка названий месяцев по "традиционной" посл.
Доброго времени суток! ;) Ребят, не подскажите, как вывести массив, содержащий названия месяцев,...

Список названий месяцев года
Подскажите как создать программу в Visual Basic 6. Задание такое: 1. Создать программу, ...

Из списка названий месяцев удалить повторные названия
Из списка названий месяцев удалить повторные названия: <December, January, February, March, April,...

11
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
19.03.2014, 19:47 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Заведем класс, подтянем стандартные функции с датами.
Здесь сортируется ListBox1, в Вашем случае это может быть ListBox2

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Mnths As New List(Of Mnth)
        For Each M As String In ListBox1.Items
            Dim monthNumber = DateTime.ParseExact(M, "MMMM", Globalization.CultureInfo.CurrentCulture).Month
            Mnths.Add(New Mnth With {.Month = M, .Number = monthNumber})
        Next
        Mnths.Sort(Function(a As Mnth, b As Mnth) a.Number.CompareTo(b.Number))
        ListBox1.Items.Clear()
        ListBox1.Items.AddRange(Mnths.ToArray)
    End Sub
    Class Mnth 'Наш класс
        Public Month As String
        Public Number As Integer
        Public Overrides Function ToString() As String
            Return Month
        End Function
    End Class
End Class
4
4407 / 3531 / 843
Регистрация: 02.02.2013
Сообщений: 3,417
Записей в блоге: 2
19.03.2014, 20:52 3
а что такое G?
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
19.03.2014, 20:55 4
Случайно осталось
0
5 / 5 / 0
Регистрация: 08.05.2011
Сообщений: 215
20.03.2014, 14:25  [ТС] 5
А для чего мы переопределяем функцию ToString()? Где мы её используем?
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
20.03.2014, 14:51 6
Здесь:
VB.NET
1
ListBox1.Items.AddRange(Mnths.ToArray)
Для того, чтобы знать, какое из полей будет загружено в данном случае в листбокс
0
5 / 5 / 0
Регистрация: 08.05.2011
Сообщений: 215
20.03.2014, 16:02  [ТС] 7
То есть фактически это так работает?
VB.NET
1
ListBox1.Items.AddRange(Mnths.ToString.ToArray)
Добавлено через 8 минут
Или
VB.NET
1
ListBox1.Items.AddRange(Mnths.ToArray.ToString)
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
20.03.2014, 16:28 8
zzz_, ни так и ни эдак, а так, как у меня написано.

Представлять строкой мы может каждый элемент коллекции по отдельности, но не саму коллекцию, ибо она (вся коллекция) по определению не может быть String
0
5 / 5 / 0
Регистрация: 08.05.2011
Сообщений: 215
20.03.2014, 23:58  [ТС] 9
Я имел ввиду что
VB.NET
1
ToString
наверно вызывается когда мы записываем в массив?
0
1710 / 1198 / 227
Регистрация: 23.12.2010
Сообщений: 1,527
21.03.2014, 00:43 10
Цитата Сообщение от zzz_ Посмотреть сообщение
Я имел ввиду что ToString наверно вызывается когда мы записываем в массив?
Нет. Лист бокс в качестве любого итема принимает тип Object (ну или любой другой, Object самый общий), а вот для его отображения вызывает метод ToString. Поскольку мы заимели собственный класс, и как следствие - поимели и новый тип, надо определить, что же будет делать функция ToString в нашем классе. Т.е. какая информация будет в виде строки возвращаться. Попробуйте закомментировать строки 15-17 в коде Памирыча, и все станет ясно (будет вызываться ToString по-умолчанию вместо нашей переопределенной), как оно есть.
3
5 / 5 / 0
Регистрация: 08.05.2011
Сообщений: 215
21.03.2014, 16:19  [ТС] 11
Не много не работает.
VB.NET
1
2
3
4
5
6
7
8
9
10
Private Sub addbtn_Click(sender As Object, e As EventArgs) Handles addbtn.Click
        Dim Mnths As New List(Of Mnth)
        For Each M As String In ListBox1.SelectedItems
            Dim monthNumber = DateTime.ParseExact(M, "MMMM", Globalization.CultureInfo.InvariantCulture).Month
            Mnths.Add(New Mnth With {.Month = M, .Number = monthNumber})
        Next
        Mnths.Sort(Function(a As Mnth, b As Mnth) a.Number.CompareTo(b.Number))
        'ListBox2.Items.Clear()
        ListBox2.Items.AddRange(Mnths.ToArray)
    End Sub
То есть я выбрал месяцы в ListBox1, перенес их во ListBox2. Но когда новые выбираю, они просто идут в конец ListBox2. А мне нужно чтобы встали на свое место.
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
21.03.2014, 16:40 12
zzz_, Листбоксу не объяснить, что сортировка нужна всякий раз, как в нем обновятся данные.

Каждый раз после еды после добавления месяцев вызывайте процедуру сортировки вновь.
2
21.03.2014, 16:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2014, 16:40
Помогаю со студенческими работами здесь

Изучение названий месяцев года на английском языке
Здравствуйте. Я студент 2 курса. Учусь на специальности "Компьютерные науки". Задали нам курсовую....

Подменить список названий месяцев компонента своим списком
В компоненте TDateTimePicker названия месяцев даты представлены с прописной буквы в именительном...

Существует ли встроенная в WPF локализация названий дней недели и месяцев?
Гуглил, не нашёл. В то же время, не было и примеров локализации дней недели и названий месяцев, что...

Составить таблицу из названий месяцев года и числа дней в каждом из них
Здравствуйте, надо составить таблицу из названий месяцев года и числа дней в каждом из них....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru