好吧,我是菜鸟,所以请放轻松。我已经使用c#在WPF中创建了一个应用程序。在我执行的许多功能中,有一个显示从1:0:0到0倒数的文本框。它附加了开始/重置,播放/暂停,+ 30秒,-30秒按钮。它们都工作正常。但是,我需要从该特定文本框中显示的输出才能在我在另一个或重复的文本框中创建的辅助窗口中显示。这有可能吗?
谢谢
public void CountDownTimer()
{
_timer = new DispatcherTimer(new TimeSpan(0, 0, 1), DispatcherPriority.Normal, delegate
{
// _time = TimeSpan.FromMinutes(60);
ShowTimer.Text = _time.ToString("c");
if (_time == TimeSpan.Zero) _timer.Stop();
_time = _time.Add(TimeSpan.FromSeconds(-1));
}, Application.Current.Dispatcher);
}
//STARTS TIMER FROM 1HOUR ALSO RESETS
private void StartButton_Click(object sender, RoutedEventArgs e)
{
_time = TimeSpan.FromMinutes(60);
_timer.Start();
}
//PAUSES AND COMMENCES TIMER NOTE: THIS DOES NOT RESET THE TIMER
private void PauseButton_Click(object sender, RoutedEventArgs e)
{
if (_timer.IsEnabled)
{
_timer.Stop();
}
else _timer.Start();
}
我知道您知道这里有不好的做法,所以我不会为此而you之以鼻。:D
实现所需目标的最简单方法是将辅助窗口作为第一个窗口的成员,然后将DispatchTimer的回调更改为
_timer = new DispatcherTimer(new TimeSpan(0, 0, 1), DispatcherPriority.Normal, delegate
{
// _time = TimeSpan.FromMinutes(60);
ShowTimer.Text = _time.ToString("c");
if (_time == TimeSpan.Zero) _timer.Stop();
_time = _time.Add(TimeSpan.FromSeconds(-1));
secondaryWindow.TextBoxTimer = _time;
}, Application.Current.Dispatcher);
这取决于您在哪里以及如何实例化辅助窗口,以及第一个窗口是否引用了它。您还可以考虑在计时器更改时引发一个事件,并使用更新文本框的处理程序将该事件的辅助窗口预订给该事件。更好的是,不要将TextBox之类的控件用作变量,而是将它们绑定到另一个类的属性。这是迈向MVVM的一步。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句