以下是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
时。我意识到作业是根据代表的思考,但这似乎不一致。当某些东西被指定为处理程序时,很容易找到它。
答案 0 :(得分:1)
您的事件处理程序声明并不完全符合要求。 ElapsedEventHandler委托具有不同的签名。修正:
void DoSomething(object sender, System.Timers.ElapsedEventArgs e) {
// etc..
}
IntelliSense现在可以找到所有参考文献。支持使用IntelliSense来正确分配事件。键入+=
后,按两次Tab键让它自动生成代码。