我不明白委托是如何在c#中处理事件的。
语法形式为:
公共事件控制。someename += new control.someNameDelegate(methodName);
那么它怎么知道是什么事件(比如鼠标点击等)触发了这个方法呢?我完全不明白这是怎么回事。我知道委派会调用methodName,但我不明白是什么事件。
(Addittional信息)在上面的2行代码中,如果someename是ContentModified,那么代码就会编译在上面的两行代码中,如果someename是Banana,那么代码将无法编译。
然而,ContentModified在代码中除了上面的两行之外没有其他地方:
那么编译器是如何区分的呢?
例如,假设您创建了一个userControl,并且您的控件有一个按钮,当按钮文本发生变化时,您为它定义了一个事件。也就是说,您可以看到按钮文本的变化,并在那里为它定义一个事件。
public event TextChangedEventHandler ItemTextChanged;
public delegate void TextChangedEventHandler(object Sender);
private void btnContent_Click(object sender, RoutedEventArgs e)
{
if (ItemTextChanged != null)
{
ItemTextChanged(txtbChildBtn);
}
}
相同的示例,但名称不同
public event ValueChangedEventHandler ItemValueChanged;
public delegate void ValueChangedEventHandler(object Sender);
private void btnContent_Click(object sender, RoutedEventArgs e)
{
if (ItemValueChanged != null)
{
ItemValueChanged(sender);
}
}
或focusChanged按钮
public event FucosEventHandler FucosChanged;
public delegate void FucosEventHandler(object Sender, DependencyPropertyChangedEventArgs e);
private void btnContent_FocusableChanged(object sender, , DependencyPropertyChangedEventArgs e)
{
if (FucosChanged != null)
{
FucosChanged(sender, e);
}
}