Я пытаюсь создать программу Music Player на C #.Проект, которым я сейчас занимаюсь, предназначен для личного использования и не будет опубликован.Ребята, я покажу вам, что я сделал до сих пор:
Пользовательский интерфейс: ![enter image description here](https://i.stack.imgur.com/eAMOg.png)
Это пользовательский интерфейс программы, слева есть двакнопки «Моя музыка и избранное» (которая должна быть самой популярной).Мне нужна помощь в сортировке элементов списка от самого большого до наименьшего, что означает, что наиболее часто воспроизводимый из них должен быть первым в списке (данные хранятся в текстовом файле, информация представлена в разделе «что пытались»).и я не уверен, как это сделать с помощью списка.Игнорируйте элемент управления Windows Media Player в правом нижнем углу, я использую его для воспроизведения музыкальных файлов и скрытия при запуске программы.
У меня есть элемент управления списком, в котором есть разные песни, каждый раз, когда элемент выбирается из списка, воспроизводится выбранный элемент.В настоящее время я сохраняю данные каждой песни в текстовом файле.Также при нажатии кнопки «Избранное» программа очищает текущий список (она не открывает новую форму) и добавляет данные из папки (если песня никогда не воспроизводилась до того, как у нее не будет сгенерирован файл .txt, поэтомуне будет добавлено).Мне удалось перечислить самые популярные песни в списке.Таким образом, у меня есть файл .txt для каждой песни, в котором указано, сколько раз песня была воспроизведена в первой строке.
Кроме того, я попытался создать массив двухмерных строк, который имеет 2 столбца, название песни.первое и количество пьес как второе.Я пытался отсортировать массив, но результаты не сортировались, когда я пытался добавить элементы массива в список.
//This is my sort class:
string[,] _sortArray;
int[] _tagArray;
int _sortIndex;
protected string[,] SortArray { get { return _sortArray; } }
public ArraySort(string[,] theArray, int sortIndex)
{
_sortArray = theArray;
_tagArray = new int[_sortArray.GetLength(0)];
for (int i = 0; i < _sortArray.GetLength(0); ++i) _tagArray[i] = i;
_sortIndex = sortIndex;
}
public string[,] ToSortedArray()
{
Array.Sort(_tagArray, this);
string[,] result = new string[
_sortArray.GetLength(0), _sortArray.GetLength(1)];
for (int i = 0; i < _sortArray.GetLength(0); i++)
{
for (int j = 0; j < _sortArray.GetLength(1); j++)
{
result[i, j] = _sortArray[_tagArray[i], j];
}
}
return result;
}
public virtual int Compare(int x, int y)
{
if (_sortIndex < 0) return 0;
return CompareStrings(x, y, _sortIndex);
}
protected int CompareStrings(int x, int y, int col)
{
return _sortArray[x, col].CompareTo(_sortArray[y, col]);
}
//Calling the method from the main program and storing the array data to the
//list
ArraySort comparer = new ArraySort(array, 1);
string[,] sortedData = comparer.ToSortedArray();
for (i = 0; i < sortedData.GetLength(0); i++)
{
listSongs.Items.Add(sortedData[i,0]);
}
Я ожидал, что элементы массива будут отсортированы от самого большого до самого маленького, но этопохоже, это не так, поскольку список отсортирован случайным образом.