WPF--关于Action事件小结
1.需要类实例去调用事件建立订阅关系
public event Action<int, object> MaintainEvent;
new GP1().MaintainEvent += NormalCmdAction;
2.static用处--在不便实例的时候,可以直接由类调用
public static event Action<int, object> MaintainEvent;
GP1.MaintainEvent += NormalCmdAction;
小结:事件是自己的,好方法是别人的,在别人家里签下订阅关系,在自己这里调用或者其他处调用
补充:Action基础用法
using System;
namespace ActionExample
{
public class MyClass
{
// 定义一个具有两个参数的Action事件
public event Action<int, string> MyEvent;
// 触发事件的方法
public void TriggerEvent(int arg1, string arg2)
{
MyEvent?.Invoke(arg1, arg2);
}
}
class Program
{
static void Main(string[] args)
{
MyClass obj = new MyClass();
// 订阅事件处理程序
obj.MyEvent += HandleEvent;
// 触发事件
obj.TriggerEvent(100, "Hello");
}
// 处理事件的方法
private static void HandleEvent(int arg1, string arg2)
{
Console.WriteLine($"事件被触发了,参数1:{arg1}, 参数2:{arg2}");
}
}
}
在上面的示例中,MyClass类定义了一个具有两个参数(int和string类型)的Action事件MyEvent,并在TriggerEvent方法中触发该事件。在Main方法中,我们创建了一个MyClass的实例,并使用+=运算符将HandleEvent方法订阅到MyEvent事件上。最后,我们调用TriggerEvent方法来触发事件,并传递两个参数。当事件被触发时,HandleEvent方法将被调用,输出事件的参数值。
20241104补充--C# 中,事件不能直接调用,它们只能通过注册的事件处理程序进行处理。
关于错误提示“事件 AccessUserEvent 只能出现 += 或 -= 的左边”通常是因为你在尝试直接调用事件(Invoke),而不是通过事件订阅来触发它。在 C# 中,事件不能直接调用,它们只能通过注册的事件处理程序进行处理。
例:
//更新前台界面用户信息显示 GloAccessHelper.AccessUserEvent?.Invoke(GloAccessHelper.userInfo); 报错事件AccessUserEvent只能出现+=或-=的左边是什么原因
1.正确使用方法调用
// 触发事件的方法
public void TriggerEvent(int arg1, string arg2)
{
MyEvent?.Invoke(arg1, arg2);
}
TriggerEvent(1,"1")
2.而不是直接使用事件去调用--错误
MyEvent?.Invoke(2,"2"); //调用时2
本文介绍了WPF中的Action事件,包括如何在类实例和静态上下文中使用,以及如何建立订阅关系。通过MyClass的示例展示了触发事件和处理事件的方法。

2867

被折叠的 条评论
为什么被折叠?



