C# 需要了解事件如何在C语言中与委托一起工作#
我无法理解代理如何处理C#中的事件 语法的形式是: 公共事件someName委托someName control.someName+=新控件.someNameDelegate(methodName) 那么它如何知道是什么事件(如鼠标点击等)触发了该方法呢。 我完全不知道这是怎么回事。 我知道该代理将调用methodName,但我不知道调用什么事件 [附加信息] 在上面的两行中,如果someName是ContentModified,那么代码将编译 在上面的两行中,如果someName是香蕉,则代码不会编译 但是,除了上面的第2行,ContentModified在代码中没有其他位置:C# 需要了解事件如何在C语言中与委托一起工作#,c#,events,delegates,C#,Events,Delegates,我无法理解代理如何处理C#中的事件 语法的形式是: 公共事件someName委托someName control.someName+=新控件.someNameDelegate(methodName) 那么它如何知道是什么事件(如鼠标点击等)触发了该方法呢。 我完全不知道这是怎么回事。 我知道该代理将调用methodName,但我不知道调用什么事件 [附加信息] 在上面的两行中,如果someName是ContentModified,那么代码将编译 在上面的两行中,如果someName是香蕉,则代码
那么编译器是如何区分差异的呢?例如,假设您创建了一个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);
}
}
还是他妈的换钮
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);
}
}
什么知道是什么触发了这个方法?不清楚你称之为“它”是什么。也许你错过了角色提升活动?假设你知道委托,你已经知道了吗?事件句柄需要从EventArgs派生,委托应该有如下符号:void-OnEventHandling(对象发送者,EventArgs参数)看看这些教程:和。你使用什么技术(WinForms,WPF,UWP,ASP.NET,GTK?您可能也会发现这很有帮助:是的,但是您如何知道它是textchangedventhadler而不是textfontchangedventhadler或其他名称呢。有允许的名单吗?啊,我知道我在找什么了。它位于TextBoxBase的元数据中,例如公共静态只读路由事件TextChangedEvent;使用delegete关键字,您可以选择任何名称并创建任何类型的事件,而不受任何限制。@meyasm asadi您是对的,但我要找的是从哪里可以获得可用的事件类型。e、 是否有textbox可用的TextSpecialChar事件。元数据提供了这一点。