无法将System.EventHandler类型隐式转换为System.EventHandler <object>错误

5 c# visual-studio windows-phone-7 windows-phone-8

我试图在Windows Phone应用程序中实现一个计时器.它在Windows Phone应用程序(Silverlight)中工作正常,但它不能在Windows Phone Blank App中工作.但是它给了我以下错误 -

Cannot implicitly convert type System.EventHandler to System.EventHandler<object>
Run Code Online (Sandbox Code Playgroud)

这是我的代码 -

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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过无法将类型'System.EventHandler'隐式转换为'System.EventHandler <object>'以完成storyboard

但它甚至有帮助.我怎么能修复这个错误?

Dav*_*d L 11

直接引用事件的方法处理程序将推断类型,满足泛型类型声明要求.

mytimer.Tick += mytime_Tick;
Run Code Online (Sandbox Code Playgroud)

或者,明确声明泛型类型并使用通用EventHandler构造函数,

mytimer.Tick += new EventHandler<object>(mytime_Tick);
Run Code Online (Sandbox Code Playgroud)

会做的伎俩.

此外,根据文档,您的处理程序具有错误的签名.它应该是:

private void mytime_Tick(object sender,object e)
{
    timedisplayBlock.Text = currentcount++.ToString();    
}
Run Code Online (Sandbox Code Playgroud)


小智 7

只需写入 mytimer.Tick +=然后按TAB键两次它将修复您的错误.