c#事件处理程序没有重写
c# Event handler no overide
我开始了一份新工作,最后一个开发人员离开的地方他们想要一个他开始完成的程序。
遇到这个问题,看了半天。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
logTimer = new System.Windows.Threading.DispatcherTimer();
logTimer.Tick += new EventHandler(logTimer_Tick);
logTimer.Interval = new TimeSpan(0, 0, 0, 1);
logTimer.Start();
txtLogData.Text = Logger.GetLines();
try
{
DataProcessor gaugeProcessor = new DataProcessor(SQLConnectionString);
gaugeProcessors.Add(gaugeProcessor);
grdProcessor.ItemsSource = gaugeProcessors;
List<GaugePort> ports = SQLClient.GetGaugePorts(SQLConnectionString);
foreach(GaugePort port in ports)
{
GaugePortListener newListener = new GaugePortListener(port);
listeners.Add(newListener);
}
grdPorts.ItemsSource = listeners;
}
catch(Exception ex)
{
}
}
我在第 4 行遇到错误 "No Overload for ' logTimer_Tick' matches delegates 'Event Handler'"
它调用的函数存在并且看起来像这样
private void logTimer_Tick(object sender, EventArgs e)
{
txtLogData.Text = Logger.GetLines();
}
我看过下面的链接,但我画了一个空白
http://www.yoda.arachsys.com/csharp/threads/parameters.shtml
C# method name expected
任何想法都会很棒
提前致谢
编辑
更改错误消息的措辞 "Typo"
直接使用方法:
logTimer.Tick += logTimer_Tick;
这应该会有所帮助,因为编译器会对您的 EventHandler 做一些奇怪的事情。
奇怪的是你的代码似乎在我的机器上运行 - 这意味着你发布的代码与你尝试的代码不一样或者它是由你的编译器引起的错误。或者,作为第三种可能性,logtimer
不是 WinForms 计时器,那么我无法重现您的问题。
在第三种情况下,第二个参数可能不是 EventArg(尽管如果您不使用 EventHandler 东西,它会起作用会很奇怪)。然后你可以尝试一个对象作为第二个参数:
private void logTimer_Tick (object sender, object e)
Windows phone 8.1 (No overload for 'method' matches delegate 'System.EventHandler').
似乎是必须的
我开始了一份新工作,最后一个开发人员离开的地方他们想要一个他开始完成的程序。
遇到这个问题,看了半天。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
logTimer = new System.Windows.Threading.DispatcherTimer();
logTimer.Tick += new EventHandler(logTimer_Tick);
logTimer.Interval = new TimeSpan(0, 0, 0, 1);
logTimer.Start();
txtLogData.Text = Logger.GetLines();
try
{
DataProcessor gaugeProcessor = new DataProcessor(SQLConnectionString);
gaugeProcessors.Add(gaugeProcessor);
grdProcessor.ItemsSource = gaugeProcessors;
List<GaugePort> ports = SQLClient.GetGaugePorts(SQLConnectionString);
foreach(GaugePort port in ports)
{
GaugePortListener newListener = new GaugePortListener(port);
listeners.Add(newListener);
}
grdPorts.ItemsSource = listeners;
}
catch(Exception ex)
{
}
}
我在第 4 行遇到错误 "No Overload for ' logTimer_Tick' matches delegates 'Event Handler'"
它调用的函数存在并且看起来像这样
private void logTimer_Tick(object sender, EventArgs e)
{
txtLogData.Text = Logger.GetLines();
}
我看过下面的链接,但我画了一个空白 http://www.yoda.arachsys.com/csharp/threads/parameters.shtml
C# method name expected
任何想法都会很棒
提前致谢
编辑
更改错误消息的措辞 "Typo"
直接使用方法:
logTimer.Tick += logTimer_Tick;
这应该会有所帮助,因为编译器会对您的 EventHandler 做一些奇怪的事情。
奇怪的是你的代码似乎在我的机器上运行 - 这意味着你发布的代码与你尝试的代码不一样或者它是由你的编译器引起的错误。或者,作为第三种可能性,logtimer
不是 WinForms 计时器,那么我无法重现您的问题。
在第三种情况下,第二个参数可能不是 EventArg(尽管如果您不使用 EventHandler 东西,它会起作用会很奇怪)。然后你可以尝试一个对象作为第二个参数:
private void logTimer_Tick (object sender, object e)
Windows phone 8.1 (No overload for 'method' matches delegate 'System.EventHandler').
似乎是必须的