在同一个班级,我有:
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 设为静态,因为如果类设为静态,我必须拥有每个变量和每个方法,这不是重点。我不知道如何从静态事件处理程序调用非静态方法,该方法的对象引用是什么?
最好的解决方案是使messageReceived
实例作用域而不是静态的。
private void messageReceived (object sender, messageReceivedEvent args) {}
如果你想保持静态,那么你必须使用sender
应该是对你的MainWindow
实例的引用的实例,你所要做的就是转换它。
private static void messageReceived (object sender, messageReceivedEvent args)
{
((MainWindow)sender).stopProcesses();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句