C# windows phone中的倒计时
如何在我的Windows Phone 8.1应用程序中实现倒计时?似乎没有这方面的信息。我所能找到的所有东西都适用于Windows窗体应用程序或Windows应用程序,但它们似乎都不适用于手机应用程序。这就是我正在做的-C# windows phone中的倒计时,c#,visual-studio,windows-phone-7,windows-phone-8,C#,Visual Studio,Windows Phone 7,Windows Phone 8,如何在我的Windows Phone 8.1应用程序中实现倒计时?似乎没有这方面的信息。我所能找到的所有东西都适用于Windows窗体应用程序或Windows应用程序,但它们似乎都不适用于手机应用程序。这就是我正在做的- namespace Timer { public partial class MainPage : Page { DispatcherTimer mytimer = new DispatcherTimer();
namespace Timer
{
public partial class MainPage : Page
{
DispatcherTimer mytimer = new DispatcherTimer();
int currentcount = 0;
public MainPage()
{
InitializeComponent();
mytimer = new DispatcherTimer();
mytimer.Interval = new TimeSpan(0, 0, 0, 1, 0);
mytimer.Tick += new EventHandler(mytime_Tick);
//HERE error comes Cannot implicitly convert type System.EventHandler to System.EventHandler<object>
}
private void mytime_Tick(object sender,EventArgs e)
{
timedisplayBlock.Text = currentcount++.ToString();
}
private void startButton_Click(object sender, RoutedEventArgs e)
{
mytimer.Start();
}
}
}
名称空间计时器
{
公共部分类主页:第页
{
DispatcherTimer mytimer=新DispatcherTimer();
int currentcount=0;
公共主页()
{
初始化组件();
mytimer=新的调度程序();
mytimer.Interval=新的时间跨度(0,0,0,1,0);
mytimer.Tick+=新事件处理程序(mytime\u Tick);
//此处出现错误,无法将类型System.EventHandler隐式转换为System.EventHandler
}
私有void mytime_Tick(对象发送方,事件参数e)
{
timedisplayBlock.Text=currentcount++.ToString();
}
私有无效开始按钮单击(对象发送者,路由目标)
{
mytimer.Start();
}
}
}
但它给了我这个错误-
无法将类型System.EventHandler隐式转换为System.EventHandler
您拼错了事件处理程序名称事件处理程序定义也需要更改,它应该是:
mytimer.Tick += mytime_Tick; // removed the 'r'
您的增量是否应该写为
timedisplayBlock.Text = (++currentcount).ToString();
或
我认为增量不会太重要,但仍应正确写入,以确保不会留下一个计数。
-请参见下面链接上的Sergiol的问题和David的答案
我注意到的另一件事是,您正在初始化Dispatchermer
两次
DispatcherTimer mytimer = new DispatcherTimer();
...
..
mytimer = new DispatcherTimer();
更好的做法是在实例上初始化以节省开销,尽管这取决于使用范围。鉴于我不知道您的其他代码是如何使用它的,我建议将其重写如下
namespace Timer
{
public partial class MainPage : Page
{
DispatcherTimer mytimer = new DispatcherTimer();
int currentcount = 0;
public MainPage()
{
InitializeComponent();
mytimer.Interval = new TimeSpan(0, 0, 0, 1, 0);
mytimer.Tick += new EventHandler(mytime_Tick);
}
private void mytime_Tick(object sender, EventArgs e)
{
timedisplayBlock.Text = (++currentcount).ToString();
}
private void startButton_Click(object sender, RoutedEventArgs e)
{
mytimer.Start();
}
}
}
综上所述,我无法重现复制时的故障
编辑-这可能是您的问题()更改private void mytimer\u勾选(对象发送方,事件参数)
到
private void mytimer\u勾选(object sender,object e)
你能发布你认为有效但没有成功的代码吗?可能包括在Windows应用程序中工作的屏幕截图?使用超时为1的Dispatchersecond@AustinMullins我用我的代码和错误编辑了我的问题。@thumbmunkeys我使用了dispatchermer
,但t给了我一个错误。现在我得到了这个错误-无法隐式转换类型System.EventHandler到System.EventHandler
无法将System.EventHandler类型隐式转换为System.EventHandler
是的,我已经用一个额外的r
修复了这个错误。现在它给了我我提到的这个新错误。我用Windows phone silverlight尝试了相同的代码,它正在工作,但使用的是Windows phone blank app,它给出了上述错误?我可以做些什么来修复此错误?另外,使用System.Windows.Threading
在空白应用程序中不起作用
namespace Timer
{
public partial class MainPage : Page
{
DispatcherTimer mytimer = new DispatcherTimer();
int currentcount = 0;
public MainPage()
{
InitializeComponent();
mytimer.Interval = new TimeSpan(0, 0, 0, 1, 0);
mytimer.Tick += new EventHandler(mytime_Tick);
}
private void mytime_Tick(object sender, EventArgs e)
{
timedisplayBlock.Text = (++currentcount).ToString();
}
private void startButton_Click(object sender, RoutedEventArgs e)
{
mytimer.Start();
}
}
}