Я делаю приложение интервального таймера в Visual Studio. Я использую wpf и c#. У меня есть одна сетка, в которой я создаю секундомер. Дело в том, что у меня есть кнопка старт / пауза и кнопка круг / сброс. Когда работает секундомер, у меня есть кнопка круга, которая является моей главной проблемой для этой темы. Поэтому я создал, что кнопка круга создает новый текстовый блок в сетке, который должен показывать время последнего круга. Добавление текстового блока работает, но я не могу получить это время круга. Я пытаюсь использовать список списков, но получаю много ошибок. Я понимаю логику c этого, но я не очень хорошо знаком с c#. Я выучил python и javascript раньше, и это немного по-другому
static string NewLap(int NewMinutes, int NewSeconds, int NewMilliseconds)
{
var NewLapTime = String.Format("{0:00}:{1:00}:{2:00}",
NewMinutes, NewSeconds, NewMilliseconds);
return NewLapTime;
}
int NewMinutes = 0;
int NewSeconds = 0;
int NewMilliseconds = 0;
List<List<int>> RecordedTimes = new List<List<int>>();
RecordedTimes.Add(new List<int> {0, 0, 0});/// This line causes error.
///If I could somehow make it to work I think the code would work
public void ResetOrLap_Click(object sender, RoutedEventArgs e)
{
if (Clicker % 2 == 0)
{
Stopwatch.Text = "00:00:00";
dt.Stop();
dt.Equals(0);
sw.Reset();
LapListing.Children.Clear();
RecordedTimes.Add(new List<int> {0, 0, 0});
}
else
{
var newTextBlock = new TextBlock();
var newSeparator = new Separator();
TimeSpan ts = sw.Elapsed;
NewMinutes = ts.Minutes - RecordedTimes[RecordedTimes.Count - 1][0];
NewSeconds = ts.Seconds - RecordedTimes[RecordedTimes.Count - 1][1];
NewMilliseconds = ts.Milliseconds / 10 - RecordedTimes[RecordedTimes.Count - 1][2];
newTextBlock.Text = NewLap(NewMinutes, NewSeconds, NewMilliseconds);
newTextBlock.FontSize = 20;
newSeparator.Width = 550;
LapListing.Children.Add(newTextBlock);
LapListing.Children.Add(newSeparator);
RecordedTimes.Add(new List<int> { ts.Minutes, ts.Seconds, ts.Milliseconds });
}
}
Если такой команды RecordedTimes.Add не было (новый список {0, 0, 0}); мой код работает нормально, но я не получаю желаемого результата. Потому что я хочу получить последнее записанное время круга.
Так, например, если первый круг длится 10 секунд, а второй круг длится 8 секунд. Текущее время на секундомере (общее время) составит 18 секунд. Я хочу, чтобы он печатал в строке 10 секунд, а во втором ряду 9 секунд и так далее. Мне просто нужно добавить один список нулей, и я думаю, что это будет работать, но я не могу это сделать. Буду признателен за любую помощь, надеюсь, я вас не слишком смутил.