同一类

时间:2017-06-02 14:58:06

标签: c#

在同一堂课中,我有:

public partial class MainWindow : Window {
// event handler
private static void messageReceived (object sender, messageReceivedEvent args)
 {
  //some code
  stopProcesses()
 }
 void stopProcesses()
 {
  //some code
 }
}

在事件处理程序中,对stopProcesses()的调用会在标题中给出错误:非静态字段,方法或属性需要对象引用' MainWindow.stopProcesses'。 他们在同一个班级,我不能将stopProcesses作为静态因为我必须拥有每个变量和每个方法,如果这个类是静态的,那不是重点。 我不知道如何从静态事件处理程序调用非静态方法,但该方法的对象引用是什么?

1 个答案:

答案 0 :(得分:4)

最好的解决方案是使messageReceived实例作用域而不是静态。

private void messageReceived (object sender, messageReceivedEvent args) {}

如果你想保持静态,那么你必须使用sender实例作为对MainWindow实例的引用,你所要做的就是投射它。

private static void messageReceived (object sender, messageReceivedEvent args)
{
  ((MainWindow)sender).stopProcesses();
}