Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 处理消息窗口关闭事件_C#_Vsto_Outlook Addin - Fatal编程技术网

C# 处理消息窗口关闭事件

C# 处理消息窗口关闭事件,c#,vsto,outlook-addin,C#,Vsto,Outlook Addin,我一直看到代码的不同变体,它应该注册一个Inspector窗口关闭事件,但我不知道将代码放在哪里。它应该位于加载项启动函数(ThisAddIn_启动)、项单击事件处理程序中还是其他位置?以及如何正确地注销处理程序,如果它是为每个邮件项目注册的 下面是我找到的一些示例代码(我不确定放在哪里): 本教程还说,我可能需要处理两种类型的关闭 在哪里注册这些事件的处理程序?您需要跟踪inspector.NewInspector事件(在启动时设置事件处理程序)。然后,当NewInspector激发时,为I

我一直看到代码的不同变体,它应该注册一个Inspector窗口关闭事件,但我不知道将代码放在哪里。它应该位于加载项启动函数(ThisAddIn_启动)、项单击事件处理程序中还是其他位置?以及如何正确地注销处理程序,如果它是为每个邮件项目注册的

下面是我找到的一些示例代码(我不确定放在哪里):

本教程还说,我可能需要处理两种类型的关闭


在哪里注册这些事件的处理程序?

您需要跟踪inspector.NewInspector事件(在启动时设置事件处理程序)。然后,当NewInspector激发时,为Inspector设置事件处理程序。在新Inspector上关闭事件。

OK,我已经为NewInspector创建了一个事件处理程序,并在内部添加了一行:
Inspector.Close+=OnInspector Close但它在inspector.Close表达式下面加下划线,并表示它无法分配给Close Mec,因为它是一个方法组。我已将inspector实例强制转换为一个事件类,它似乎可以工作:
var inspectorEvent=inspector as InspectorEvents\u 10\u event(然后将处理程序注册到inspectorEvent
inspectorEvent.Close+=OnInspectorClose;
)。但是现在如何正确地注销它呢?创建一个包装类,该类的成员之一是Inspector,并处理Inspector.Close事件。在NewInspector事件处理程序中,创建该类的新实例,并将其添加到存储在加载项类级别的列表中。当包装类处理Inspector.Close事件时,它将取消注册事件处理程序,并将自身从父加载项类存储的包装列表中删除。Hmmm,确定如果要阻止“是否要在消息中保存更改”对话框,我应该注册到哪个事件?Inspector.Close仅在此之后激发。您需要自己保存邮件(MailItem.save)或在用户使用MailItem.Close(olDiscard)之前关闭邮件
InspectorEvents_10_Event inspectorEvent = selectedItem[1].GetInspector();
inspectorEvent.Close += ItemClosed;