我不确定我的代码有什么问题,有人可以帮助修复错误吗?错误位于timer.Tick()
行。它应该是一个秒表。
namespace App3
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private int myCount;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
DispatcherTimer timer = new DispatcherTimer();
timer.Tick += new EventHandler<object>(timer_Tick);
timer.Interval = TimeSpan.FromSeconds(5);
timer.Start();
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
}
private void timer_Tick(object sender, EventArgs e)
{
myCount++;
Label.Text = myCount.ToString();
}
}
答案 0 :(得分:5)
DispatcherTimer.Tick是EventHandler
,而不是EventHandler<object>
。
您需要更改代码才能正确指定:
timer.Tick += new EventHandler(timer_Tick);
请注意,这也可以用简短的形式编写,通常更安全:
timer.Tick += timer_Tick;
答案 1 :(得分:4)
附加事件时不需要委托类型,编译器可以为您解决。试试这个:
timer.Tick += timer_Tick;
至于为什么你当前得到错误,EventHandler
委托声明如下:
public delegate void EventHandler<TEventArgs>(
Object sender,
TEventArgs e
)
这意味着您放在括号中的类型代表函数中的第二个参数。
因此,当您键入EventHandler<object>
时,编译器会查找找不到的timer_Tick(Object sender, object e)
函数,因此会出错。要使用完整的委托类型,必须是EventHandler<EventArgs>
答案 2 :(得分:1)
而不是新的EventHandler<object>
,请new EventHandler
。或者只是放+= timer_Tick;
。
答案 3 :(得分:1)
我通过两个小改动解决了同样的问题:
1)将第二个参数更改为type object:
INSTEAD OF THIS:
private void timer_Tick(object sender, EventArgs e)
使用它:
private void timer_Tick(object sender, **object** e)
2)简化
INSTEAD OF THIS:
timer.Tick += new EventHandler<object>(timer_Tick);
使用它:
timer.Tick += timer_Tick; // as suggested by WildCrustacean above