当事件分配给同名的事件处理程序时,它如何知道调用哪个方法?
考虑以下:
public static void ImplementExitOnEscape(Window window)
{
window.KeyDown += Window_KeyDown;
}
private static void Window_KeyDown(object sender, KeyEventArgs e)
{
var window = sender as Window;
// Close window when pressing the escape key.
if (e.Key == Key.Escape) if (window != null) window.Close();
}
如果我ImplementExitOnEscape(this)
在一个窗口上调用,而且:
KeyDown += Window_KeyDown;
void Window_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("Key Down");
}
那么这两个方法都将被执行,即使它们具有相同的名称。我已经知道您可以将同一个事件处理程序多次分配给一个事件,并且该方法将被调用的次数与分配的次数一样多,但是它如何在具有相同名称的两个不同事件处理程序之间产生区别?