c# - 在 C# 中保存为事件

标签 c# visual-studio-2010 vsto

我使用 VSTO(C#) 为 excel 开发了一个插件。

我想知道工作簿在运行时何时“SAVED AS”。 IE。用户正在 WBK 1 上执行一些操作,然后他使用另存为保存工作簿,然后重命名工作簿并再次开始处理它。那么在这种情况下是否可以捕获“Worlbook SAve AS”事件?

最佳答案

Application.WorkbookAfterSave 事件传入一个名为 wb 的 WorkBook 对象和一个名为 Success 的 bool 值。

您可以从 Workbook 对象的 FullName 属性中获取另存为文件名。也许您可以将初始名称存储在变量中,并在 AfterSave 事件中比较名称和位置以查看是否已像这样使用“另存为”:

using Excel = Microsoft.Office.Interop.Excel;
using System;

namespace ExcelAddIn1
{
    public partial class ThisAddIn
    {
        private string CurrentFullName { get; set; }
        private event EventHandler SaveAs;

        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            CurrentFullName = this.Application.ThisWorkbook.FullName;

            this.Application.WorkbookAfterSave += new Excel.AppEvents_WorkbookAfterSaveEventHandler(Application_WorkbookAfterSave);

            SaveAs += new EventHandler(ThisAddIn_SaveAs);
        }

        void ThisAddIn_SaveAs(object sender, EventArgs e)
        {
            //Do What I want to do if saved as
        }

        void Application_WorkbookAfterSave(Excel.Workbook Wb, bool Success)
        {
            if (Wb.FullName != CurrentFullName)
            {
                CurrentFullName = Wb.FullName;
                SaveAs.Invoke(null, null);
            }
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }
    }
}

关于c# - 在 C# 中保存为事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11611479/

相关文章:

c# - ViewPager DestroyItem 无法转换对象

c# - 在 "Resources"参数中多次指定该项目。 "Resources"参数不支持重复项

excel - VSTO Excel 2007 : Include or embed a Workbook/Worksheet in an Add-in

vba - 使用 powerpoint 对象模型而不运行 powerpoint 应用程序

c# - .NET Web API 异常错误详细信息

c# - 在 C++ 中将一个接口(interface)指针分配给另一个接口(interface)指针

.net - 配置管理器对比属性构建

ide - Visual Studio 2010 : Why aren't key combinations available?

c# - 在 VSTO 插件中存储一些数据的最佳方式是什么?

c# - Microsoft Speech Platform Runtime 11 和 Cortana 的语音识别有区别吗?