VSPackage在保存文档时注册方法

时间:2014-02-25 19:53:44

标签: visual-studio

有没有办法在保存文档时注册方法。

我尝试使用DocumentEvents.DocumentSaved但是即使保存没有任何内容也会触发此事件,我的意思是在执行save命令时文档已经保存。

2 个答案:

答案 0 :(得分:2)

“正在运行的文档表”提供了在IVsRunningDocTableEvents3::OnBeforeSave

中保存之前的回调
  

http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivsrunningdoctableevents3.onbeforesave.aspx

您需要创建IVsRunningDocTableEvents3的实施,并在实施时调用AdviseRunningEventsMethod

  

http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivsrunningdocumenttable.adviserunningdoctableevents.aspx

答案 1 :(得分:1)

您可以收听保存命令:

class Foo
{
    DTE dte;
    CommandEvents commandEvents;

    // ...

        this.commandEvents = this.dte.Events.CommandEvents;
        this.commandEvents.BeforeExecute += new _dispCommandEvents_BeforeExecuteEventHandler(CommandEvents_BeforeExecute);

    // ...

    void CommandEvents_BeforeExecute(string Guid, int ID, object CustomIn, object CustomOut, ref bool CancelDefault)
    {
        if (ID == 331)
        {
            // "Save" invoked
        }
        if (ID == 224)
        {
            // "Save all" invoked
        }
    }
}