Visual Studio'查找所有引用'对于事件处理程序失败了吗?

时间:2011-12-12 20:57:11

标签: c# visual-studio-2008 event-handling

以下是Visual Studio 2008中的一些简单示例C#代码:

public partial class Form1 : Form
{
    private static System.Timers.Timer TestTimer;
    public Form1()
    {
        InitializeComponent();

        TestTimer = new System.Timers.Timer();
        TestTimer.Elapsed += DoSomething;            
    }

   private void DoSomething(Object source, EventArgs e)
   {   

   }
}

如果我右键点击指定为处理程序的DoSomething,并选择Go to definition,则VS会找到DoSomething的正文。到目前为止一切都很好。

如果我右键单击它并Find all references它什么也没找到。 (!?)

如果我为DoSomething本身执行这些操作中的任何一个,它只找到自己,而不是作为事件处理程序的赋值。

我错过了一些明显的东西吗?也许是一个设定?在所有其他情况下,当您要求包含定义和其他所有引用的all references时。我意识到作业是根据代表的思考,但这似乎不一致。当某些东西被指定为处理程序时,很容易找到它。

1 个答案:

答案 0 :(得分:1)

您的事件处理程序声明并不完全符合要求。 ElapsedEventHandler委托具有不同的签名。修正:

    void DoSomething(object sender, System.Timers.ElapsedEventArgs e) {
       // etc..
    }

IntelliSense现在可以找到所有参考文献。支持使用IntelliSense来正确分配事件。键入+=后,按两次Tab键让它自动生成代码。