这里我谈论的是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
答案 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!");
}