У меня есть Windows.Forms.FlowLayoutPanel
, который заполняется во время выполнения с помощью элементов управления типа MasterMeter
(и управляет унаследованием от MasterMeter). Это ваш стандарт Usercontrol
. Каждый из этих элементов управления имеет свойство ErrorTime
. Это значение сохраняет длительность текущей ошибки или предупреждения.Элементы управления заказами внутри FlowLayoutpanel
Datetime? ErrorTime {get; set;}
В настоящее время я пытаюсь заказать элементы управления с помощью bubblesort-method
на основе длительности ошибки (по убыванию). Прямо сейчас мне было интересно, есть ли более быстрый/более эффективный/более надежный способ сделать это?
Если нет, есть ли другой контейнер, который я мог бы использовать? Она должна иметь следующие caracteristics:
- Количество элементов может варьироваться
- Количество элементов во время выполнения может изменяться от 0 до 100 (никогда не было более 100 ошибок, прежде чем ...)
- ДОЛЖНА быть в состоянии содержать UserControls
Текущий код (который не разберется)
Я использую 1D-массива т o держать его простым (на самом деле его зубчатый массив). Примечание: possibilty из NULL
значений
MasterMeter[] meterList = {new MasterMeter() { ErrorTime = null },
new MasterMeter() { ErrorTime = DateTime.Now },
new MasterMeter() { ErrorTime = DateTime.Now.AddDays(-10) },
new MasterMeter() { ErrorTime = DateTime.Now.AddDays(37) },
new MasterMeter() { ErrorTime = DateTime.Now.AddDays(53) },
new MasterMeter() { ErrorTime = DateTime.Now.AddDays(3) },
new MasterMeter() { ErrorTime = null },
new MasterMeter() { ErrorTime = DateTime.Now.AddDays(-17) },
new MasterMeter() { ErrorTime = DateTime.Now.AddDays(-10) },
new MasterMeter() { ErrorTime = null }
};
Я Bubblesorting
следующим образом:
for (int outer = 0; outer < meterList.Count(); outer++)
{
for (int inner = 0; inner < (meterList.Count() - 1); inner++)
{
if (meterList[inner].ErrorTime > meterList[inner + 1].ErrorTime)
{
var temp = meterList[inner + 1];
meterList[inner + 1] = meterList[inner];
meterList[inner] = temp;
}
}
}
Мой результат Ouput (Использование Console.Writeline
):
foreach (MasterMeter meterlist in meterList)
{
Console.WriteLine(meterlist.ErrorTime);
}
Console.ReadLine();
Но мой массив еще ISN» t отсортировано. Что здесь происходит?
Вы должны показать свой сортировочный код. – LarsTech
Сделано! thnx за помощь – User999999