0

私のコードの何が問題なのか教えてください。

C#:

namespace ComMsg
{
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IM
{
    [DispId(1)]
    event M.MHandler OnMSend;
}

[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IMEvents
{
    [DispId(2)]
    void sendM(M.Process status, string msg);
}

[ComSourceInterfaces(typeof(IM), typeof(IMEvents))]
[ClassInterface(ClassInterfaceType.None)]
public class Message : IM
{
    public enum Process { Error, Complete }

    public delegate void MHandler(Process status, string msg);
    public event MHandler OnMSend;

    public void sendM(Process status, string msg)
    {
        if (OnMSend != null)
            OnMSend(status, msg);
    }
}
}

VBAコードからこれを呼び出します

Private WithEvents moCom     As ComMsg.M

Public Function Run() As Boolean
Set moCom = New ComMsg.M

それは失敗します

新しい ComMsg.Message

エラーメッセージが表示されます

「オブジェクトまたはクラスは一連のイベントをサポートしていません」

この問題の解決にご協力ください。ありがとう

4

1 に答える 1

1

COM 相互運用を実装するために必要な設定がかなり不足しているようです。提案された重複リンクは、同様の問題に対処しています。

COM 相互運用を使用するために含める必要があるすべてのさまざまな設定については、こちらの MSDN Com 相互運用の例を参照することも価値があるかもしれません。

于 2012-08-21T21:37:42.980 に答える