0

我有一个从 ac# 组件触发的事件,另一个 c++ 组件需要注册此事件并捕获此事件。我使用 C++/CLI 作为中介来访问该组件的其他功能。虽然有一个代码可用于其他方式,但对于其他方式来说却不多。

4

1 回答 1

1

如果你有一个 C# 类

public class Foo
{
    public event EventHandler MyEvent;

    protected virtual void OnMyEvent(EventArgs e)
    {
        EventHandler handler = MyEvent;
        if (handler != null)
        {
            handler(this, e);
        }
    }
}

和一个 C++/CLI 类

public ref struct Bar
{
public:
    void handler(System::Object^ sender, System::EventArgs^ e)
    {
    }
}

那么您应该能够添加一个事件监听器,如下所示

Foo^ foo = gcnew Foo;
Bar^ bar = gcnew Bar;

foo->MyEvent += gcnew EventHandler(bar, &Bar::handler);

(未经测试)

于 2013-02-13T14:15:55.567 回答