我想将间隔的值调整为按钮事件。
单击该按钮时,该值增加1,然后减少到
interval想要以秒为单位计算值。
这适用于不调整间隔。
// Button click event
private void Start_sorting_Click(object sender, RoutedEventArgs e)
{
// The currValue the interval value.
this.CurrentValue.Content = currValue;
// timer start
if (_timer.IsEnabled == false)
{
timerStatus = 1;
_timer.Tick += timer_tick;
_timer.Interval = new TimeSpan(0, 0, currValue);
_timer.Start();
}
}
private void timer_tick(object sender, EventArgs e)
{
traceInfo = this.sortingInfos[this.sortingInfosIndex++];
// Animation proceeds for about one second.
start_animation(traceInfo.Position, traceInfo.TargetPosition);
if (sortingInfosIndex >= sortingInfos.Count)
{
_timer.Stop();
}
}
// Button click event, interval up
private void repeatAddvalueButton_Click(object sender, RoutedEventArgs e)
{
currValue++;
this.CurrentValue.Content = currValue;
_timer.Interval.Add( new TimeSpan(0, 0, currValue));
}
// Button click event, interval down
private void repeatRemoveValueButton_Click(object sender, RoutedEventArgs e)
{
currValue--;
this.CurrentValue.Content = currValue;
_timer.Interval.Subtract(new TimeSpan(0, 0, 1));
}
答案 0 :(得分:2)
您假设.Add
和.Subtract
方法修改现有间隔,但实际上它们会返回一个新间隔。由于您并未将其存储在任何位置,因此您只需抛弃加法或减法操作。
修改代码以使用您计算的新间隔:
private void repeatAddvalueButton_Click(object sender, RoutedEventArgs e)
{
currValue++;
this.CurrentValue.Content = currValue;
_timer.Interval = _timer.Interval.Add( new TimeSpan(0, 0, currValue));
}
// Button click event, interval down
private void repeatRemoveValueButton_Click(object sender, RoutedEventArgs e)
{
currValue--;
this.CurrentValue.Content = currValue;
_timer.Interval = _timer.Interval.Subtract(new TimeSpan(0, 0, 1));
}
您可以在上面看到我修改它以将_timer.Interval
设置为add或subtract方法的结果。这将改变间隔,因为它不会抛弃操作。
了解哪些类型是可变的(可变的)以及哪些类型是不可变的很重要。 TimeSpan
是一个不可变对象,因此对它的操作会返回新的TimeSpan
个对象,它不会修改现有的对象。