Получения интервала времени из словаря C#

170
28 января 2020, 15:00

Совсем недавно начал программировать, столкнулся с трудностью. У меня есть заполненный данными словарь, внутри которого ключи - названия нужных сигналов, внутри каждого ключа с сигналом лежат еще ключи типа DateTime, внутри этих ключей лежит значение (значение сигнала в нужный момент времени):

public static Dictionary<string, SortedDictionary<DateTime, double>> dic = new Dictionary<string, SortedDictionary<DateTime, double>>();

Тестовый пример вывода, чтобы понять что лежит в словаре:

public static void readDic()
{
    foreach (var varName in dic)
    {
        foreach (var data in varName.Value)
        {
            Console.WriteLine("{0}: Key: {1}, Value {2}", varName.Key, data.Key, data.Value);   
        }
    }            
}

Данные нужны для вывода на график, x - время, y - значение в это время. Нужно сделать выбор интервала, примерно таким образом:

Нужно сделать, чтобы даты всех дней, в которые записаны данные в словаре выделялись в календаре, чтобы понять, за какие дни можно получить данные.

При нажатии на выделенную дату в календаре, в первом окне с временем после нажатия должно появляться начальное время данных, которые записано в выделенный день, также нужно сделать возможность регулировать время вверх в этом окне.

Во втором окне нужно сделать возможность задавать интервал в часах, минутах, секундах от начальной точки в интервале, которое в первом окне, как на картинке.

В итоге после всего этого нужно получить начальную дату типа DateTime в формате yyyy'-'MM'-'dd HH':'mm':'ss', которое будет в первом окне - начало интервала И конец интервала, то есть как-то добавить к начальному значению времени, значение которое ввели во втором окне. Как это можно реализовать, может есть какой-то готовый пример реализации подобного?

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
    {
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        dateTimePicker1.CustomFormat = "HH:mm:ss";
        dateTimePicker2.CustomFormat = "HH:mm:ss";
    }
    private void dateTimePicker2_ValueChanged_1(object sender, EventArgs e)
    {
    }
    private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
    {
        //Чтобы выделить даты, в которых записаны данные в словаре
        List<DateTime> dateTimes = new List<DateTime>();
        monthCalendar1.BoldedDates = dateTimes.ToArray();
    }
}
READ ALSO
Как получить значение по ID, использую C#?

Как получить значение по ID, использую C#?

Как получить значение по ID, использую C#? может что-то в конце кода нужно добавить? по факту нужно чтобы в переменной result оказалось значение...

235
Интерполяция строк в C# 6 без использования $

Интерполяция строк в C# 6 без использования $

В конфигурационном JSON файле используются строки следующего вида:

166
Как вывести окно поверх всех окон в Windows?

Как вывести окно поверх всех окон в Windows?

Нужно вывести окно поверх всех окон, для эффекта водяного знакаВозможно ли это сделать с помощью WPF без использования WinApi?

241