【发布时间】:2015-05-09 12:33:33
【问题描述】:
这里我说的是 Double Agent(Windows7/8 版本的 MS Agent,我想和 office 2007 一样)。
很抱歉,我说的是完整的产品,但我真的很生气赶上一个事件(捆绑的样本对此没有帮助)...
在示例中我有一个类似的句柄:
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:\Users\Shawn\Documents\Visual 工作室 2013\Projects\XCopyPro\XCopyPro\FormMain.cs 159 37 XCopyPro
【问题讨论】: