所以我正在开发一个应用程序,它需要在第二页上计算每个页面的计时器。我认为最好将一个实际的函数放在一个类上,并让它由需要它的页面调用。我所知道的是如何让计时器在一个页面中工作......令我感到困惑的是如何让它在课堂上工作。
毋庸置疑,我失败了。
这是我在课堂上所做的:
namespace Masca
{
public class timer
{
public void StartTimer()
{
System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
dispatcherTimer.Start();
}
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
DateTime datetime = DateTime.Now;
}
我在页面中所做的事情我需要
中的计时器namespace Masca
{
public partial class signup : Elysium.Controls.Window
{
public timer timer;
public signup(string Str_Value)
{
InitializeComponent();
tag.Text = Str_Value;
}
public void dispatcherTimer_Tick(object sender, EventArgs e)
{
DateTime datetime = DateTime.Now;
this.doc.Text = datetime.ToString();
}
我无法得到'dispatcherTimer_Tick'事件,知道它应该从类'计时器'获得如何工作的说明。
关于如何做到这一点的任何想法?
答案 0 :(得分:1)
您可能想要在计时器类中添加一个事件:
public class timer
{
public event EventHandler TimerTick;
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
if (TimerTick != null)
TimerTick(this, null);
}
因此,在您的窗口中,您可以只听这个事件。
答案 1 :(得分:0)
您需要在timer
课程中公开自己的事件或委托。外部类订阅此事件/委托,您可以从dispatcherTimer_Tick
类中的timer
方法引发/调用它。
我会在timer
课程中执行类似的操作:
public delegate void TimeUp(); // define delegate
public TimeUp OnTimeUp { get; set; } // expose delegate
...
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
DateTime datetime = DateTime.Now;
if (OnTimeUp != null) OnTimeUp(); // call delegate
}
来自课外:
public timer timer;
...
timer.OnTimeUp += timerOnTimeUp;
private void timerOnTimeUp()
{
// time is up
}