想象一下像这样的方法(在Win Forms中):
//First method
private void buttonStart_Click(object sender, EventArgs e)
{
//I call another method here
this.GetData(sender, null)
}
//Second method
private void GetData(object sender, EventArgs e)
{
//how to check IF calling method is buttonStart_Click ???
if(sender.Equals == buttonStart_Click)
{
//DO BLAH BLAH
}
}
我希望我很清楚,那就是我想知道哪个方法调用'GetData'。 注意我知道我可以拥有一个全局变量并将其设置为某个东西,但我想知道是否有直接的方法来执行此操作?
感谢。
答案 0 :(得分:1)
sender
不会是buttonStart_Click
,它只是按钮。所以你可以测试它。
if (sender != null && sender.Equals(buttonStart))
{
// work with this information
}
但是,如果您发现自己沿着这条路走下去,最终可能会看到多个if
块,每个块都有不同的行为,具体取决于sender
的身份。如果是这种情况,您可以通过不同的方法获得更好的服务。为每个事件设置不同的处理程序,通过委托等封装不同的逻辑。不要以满为if / else if / else if / ...
的页面结束。
答案 1 :(得分:0)
如果你因为从其他方法调用方法而必须做一些不同的事情,那么最好只调用另一种方法:
//First method
private void buttonStart_Click(object sender, EventArgs e)
{
//I call another method here
this.SpecialGetData(sender, null)
}
//Second method
private void GetData(object sender, EventArgs e)
{
// Do regular stuff
}
//Special second method
private void SpecialGetData(object sender, EventArgs e)
{
//DO BLAH BLAH
}
答案 2 :(得分:0)
不确定为什么这样做,但如果你需要... http://www.csharp411.com/c-get-calling-method/