需要了解c#中的事件如何与委托一起工作



我不明白委托是如何在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);
}
}

最新更新