c#Double Agent命令事件处理程序

时间:2015-05-09 12:33:34

标签: c# handle agent

这里我谈论的是Double Agent(一个Windows7 / 8版本的MS Agent,和我假设的Office 2007一样)。

我'对不起,我' M在谈论一个完整的产品,但我' M真的是拼了命地追赶事件(捆绑的样品不帮助这个)...

在样本中,我有一个类似的句柄:

public MsaWithDa()
{
    InitializeComponent();

    mDaControl = new DoubleAgent.Control.Control ();
    mDaControl.Show += new DoubleAgent.Control.ShowEventHandler (mDaControl_Show);
}

和此:

private void mDaControl_Show(string CharacterID, DoubleAgent.Control.VisibilityCauseType Cause)
{
    SetDaControlButtons();
}

现在我需要处理一个不同的事件(当用户从​​代理的菜单中选择一个命令时)..我有这个

private void mainAgent_Command(object sender, AgentObjects.IAgentCtlCommand e) 
{
        mDaControlChar.Play("Wave");
        mDaControlChar.Speak("Hello!");
}

它基于产品的用户手册:

  

当您的应用程序处于输入活动状态时,Double Agent会发送此事件   并且用户从角色的弹出菜单中选择一个命令,或者通过   口头输入。

public event CtlCommandEventHandler CtlCommand

我将其添加到主窗体中:

mDaControl.Command += new DoubleAgent.Control.Command(mDaControl_Command);

但缺少某些东西,我必须传递这两个值才能测试。

很抱歉,我知道这是一个愚蠢的问题,确定超级基本,但这是我第一次需要在c#中使用事件处理程序

希望有人应该帮助,非常感谢

编辑: 基于这篇文章:Understanding events and event handlers in C#

我现在编码:

public delegate void MyEventHandler(object sender, AgentObjects.IAgentCtlCommand e);
public event MyEventHandler AgentObjects;

和此:

    private void InitializeAgent()
    {
          mDaControl.Command += new MyEventHandler(HandleSomethingHappened);
    }

    private void HandleSomethingHappened(object sender, AgentObjects.IAgentCtlCommand e) 
{
        mDaControlChar.Play("Wave");
        mDaControlChar.Speak("Hello!");
}

但我在这里有错误:

new MyEventHandler(HandleSomethingHappened)
  

错误1无法隐式转换类型' XCopyPro.Main.MyEventHandler'   至   ' DoubleAgent.Control.CommandEventHandler' C:\用户\肖恩\文档\ Visual   Studio 2013 \ Projects \ XCopyPro \ XCopyPro \ FormMain.cs 159 37 XCopyPro

2 个答案:

答案 0 :(得分:0)

您应该能够使用新的DoubleAgent.Control.CommandEventHandler而不是新的MyEventHandler。只要您的方法与DoubleAgent事件处理程序具有相同的签名,它就应该起作用。

答案 1 :(得分:0)

对不起,我是C#的新手!没有文档,你不应该帮助我......

我按照手册解决了自己......

代码非常简单,在某处:

mDaControl.Command += new DoubleAgent.Control.CommandEventHandler(mDaControl_Commands);

而且:

private void mDaControl_Commands(DoubleAgent.Control.UserInput e)
{
    mDaControlChar.Play("Wave");
    mDaControlChar.Speak("Hello!");
}