Я пишу приложение для отслеживания транспортных средств с использованием GMAP.NETВремя TrackBar или очень большие значения с помощью TrackBar
Я хочу, чтобы отобразить одновременное движение нескольких маркеров транспортных средств на основе даты/время.
Для этого я хотел бы использовать панель треков таким образом, что, когда Пользователь скользит по трекбару, отображается соответствующее перемещение нескольких маркеров.
Я сделал то же самое приложение в браузере, и он работал очень хорошо. Я преобразовал атрибут datetime метки метки в временную метку UNIX, а затем установил значения трекбара (NOUI Slider) в диапазон временных интервалов UNIX.
Но теперь я обнаружил, что не могу вообще этого сделать с помощью Windows Desktop C# Trackbar.
Проблемы:
TrackBar не может принимать очень большие значения временных меток. Например. 5 лет.
Даже после уменьшения очень больших номеров трек-брус по-прежнему не может принимать такие высокие значения и сохраняет отставание или сбой.
Например. Мне нужно показать данные в течение 5 лет. В этом случае мой трекбар будет иметь минимальное значение - 1262304000 (то есть 01-01-2010) до 1425203100 (т. Е. 01-03-2015 | 09:45).
Но такие большие значения просто не работают с моим трекболом.
Я даже принял сокращение, например. значение 1262304000 как 1, а затем 162899100 (т. е. 1425203100 - 1262304000) становится моим максимальным значением.
Но даже это очень интенсивно, а трек-бар не работает.
Просьба предложить, если есть время-TrackBar, который может показать очень большой datetimerange или как я могу использовать регулярные TrackBar с очень большими значениями.
код следующим образом -
A. Функция для преобразования DateTime к UNIX Отметка
public Int32 UnixTimeStampUTC(DateTime datetime)
{
Int32 unixTimeStamp;
DateTime zuluTime = datetime.ToUniversalTime();
DateTime unixEpoch = new DateTime(1970, 1, 1).ToUniversalTime();
unixTimeStamp = (Int32)(zuluTime.Subtract(unixEpoch)).TotalSeconds;
return unixTimeStamp;
}
B. Принимая DateTime из DataTable конкатенацией Дата & Время Столбцы и добавление третьего Колонка для хранения Отметка времени Unix из DateTime Колонка
for (int z = 0; z < dt.Rows.Count; z++)
{
if (reviseddt.Rows[z]["date"].ToString() != "")
{
dte = DateTime.Parse(reviseddt.Rows[z]["date"].ToString());
dteticks = UnixTimeStampUTC(dte);
}
else
{
dteticks = 0;
}
if (reviseddt.Rows[z]["time"].ToString() != "")
{
tm = DateTime.Parse(reviseddt.Rows[z]["time"].ToString());
tmticks = UnixTimeStampUTC(tm);
}
else
{
tmticks = 0;
}
Int32 fullDt = dteticks + tmticks;
reviseddt.Rows[z]["datetime"] = fullDt.ToString();
reviseddt.Rows[z]["datetimestring"] = reviseddt.Rows[z]["date"].ToString() + reviseddt.Rows[z]["time"].ToString();
С. Initalising TrackBar от Getti ng минимальное и максимальное значения из столбца datetime в datatable, а затем взятие диапазона в качестве разницы между значениями min и max. Следовательно, TrackBar диапазон = 1 в (Max-Min)
string strminlevel = toplotDataTable.Compute("min(datetime)", String.Empty).ToString();
string strmaxLevel = toplotDataTable.Compute("max(datetime)", String.Empty).ToString();
Int32 minLevel = Convert.ToInt32(strminlevel);
Int32 maxLevel = Convert.ToInt32(strmaxLevel);
Int32 rangeint = maxLevel - minLevel;
trackBarMoveTarget.Maximum = rangeint;
trackBarMoveTarget.Minimum = 1;
trackBarMoveTarget.LargeChange = 100;
trackBarMoveTarget.SmallChange = 1;
Пожалуйста, покажите нам свой код! Вы должны прочитать [ask] и [mcve]. – Enigmativity
Благодарим вас за комментарий. Но я не думаю, что код здесь будет иметь значение. Что делает мой код? 1. Преобразует дату и время в временную метку Unix (общая функция, которую я снял с сети) 2. Устанавливает диапазон для трекбара -> Мой основной вопрос: как работает трекер с очень большими значениями? Или есть другой метод? – itzprobablyme
Вы всегда должны размещать свой код. Это правильный этикет. Тем не менее, я дам вам подсказку: 'LargeChange',' SmallChange', 'TickFrequency'. – Enigmativity