所以我创建的闹钟在其中使用了一个动画,并且我终于明白了这一点,并重新设置了自己的能力。但现在第一次启动时,如果再次输入警报唤醒时间,则警报将熄灭2次,如果我第三次输入警报,它也会执行相同的操作,只是这次警报熄灭了3次。如果语句无限循环
下面是代码:
private void dispatcherTimer1_Tick(object sender, EventArgs e)
{
label1.Content = DateTime.Now.ToString("hh") + ":" + DateTime.Now.ToString("mm") + " " + DateTime.Now.ToString("t"+2);
}
//ALARM CLOCK
private void dispatcherTimer2_Tick(object sender, EventArgs e)
{
OpacityLower.Duration = new Duration(TimeSpan.FromSeconds(3));
OpacityLower.AutoReverse = false;
OpacityLower.To = 0.0;
OpacityRaise.Duration = new Duration(TimeSpan.FromSeconds(3));
OpacityRaise.AutoReverse = false;
OpacityRaise.To = 100.0;
//Alarm settings
if (label1.Content.Equals(label2.Content))
{
//ANIMATION
OpacityLower.Completed += (s, d) =>
{
//Actual Wake Up Call, of which i took out so nobody could get the code, also it not relevant to this,
TimeOfDayCB.Text = "";
HourAlarmCB.Text = "";
MinuteAlarmCB.Text = "";
label2.Content = null;
dispatcherTimer2.Stop();
label2.BeginAnimation(Label.OpacityProperty, OpacityRaise);
OpacityRaise.Completed += (z, c) =>
{
TimeOfDayCB.Text = "";
HourAlarmCB.Text = "";
MinuteAlarmCB.Text = "";
label2.Content = null;
dispatcherTimer2.Stop();
};
};
label2.BeginAnimation(Label.OpacityProperty, OpacityLower);
dispatcherTimer2.Stop();
}
}
所以看到我的代码,如果你能告诉我,为什么发生这种情况,并请忽略代码是如何写的不好后......(我在做一个测试阶段这相当于凌乱的编码)。
雅是我认为问题会在哪里。所以要解决这个问题我该怎么做Opacity.Lowered.Completed + = ???或Opacity.Lowered.Completed;此外,Opacity.Raised事件也会执行相同的操作... –
将所有这些事件从'dispatcherTimer2_Tick'方法移出并进入应用程序启动。 –
不幸的是,并没有解决这个问题。它仍然发射两次,我认为他们自己的标签没有通过 –