0

次のようなメソッドを想像してください (Win フォームで):

//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」を呼び出しているメソッドを知りたいということです。グローバル変数を持って何かに設定できることは知っていますが、これを行う直接的な方法があるかどうか知りたいですか?

ありがとう。

4

3 に答える 3

1

senderになりませんbuttonStart_Click、それは単にボタンになります。だからあなたはそれをテストすることができます。

if (sender != null && sender.Equals(buttonStart))
{
   // work with this information
}

ifただし、このルートをたどっていると、のIDに応じて動作が異なる複数のブロックが表示される可能性がありsenderます。その場合は、別のアプローチを使用したほうがよいでしょう。イベントごとに異なるハンドラーを用意し、デリゲートを介して異なるロジックをカプセル化するなど。ページがでいっぱいにならないようにしてくださいif / else if / else if / ...

于 2011-04-19T14:05:11.590 に答える
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
}
于 2011-04-19T13:40:53.483 に答える
0

なぜこのようにするのかわかりませんが、必要な場合は... http://www.csharp411.com/c-get-calling-method/

于 2011-04-19T13:46:20.133 に答える