第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對于 VSTO Word 加載項:另存為后是否觸發(fā)了事件?

對于 VSTO Word 加載項:另存為后是否觸發(fā)了事件?

C#
米脂 2022-10-23 13:37:59
注意:盡管我的問題與VSTO Word post save event的問題相同,但目的和目標(以及所需的代碼)是不同的。VSTO Word 后保存事件中的 OP狀態(tài):將文檔保存到磁盤后,我需要捕獲該事件,關(guān)閉文件,做我需要做的事情并重新打開它。我的需求不同??次业腛P。筆記結(jié)束我有一個VSTOWord 插件,旨在操作 RTF 文件(并且僅限 RTF 文件)的各種元素。加載項由功能區(qū)按鈕調(diào)用。如果用戶打開一個 RTF 文檔,然后執(zhí)行 a save-as,我想捕獲一個事件,以便我可以檢查為另存為選擇的文件名,如果擴展名不是 ,則禁用調(diào)用我的加載項的按鈕.RTF。在我的功能區(qū)類功能區(qū)加載方法(在功能區(qū)類的設(shè)計器文件中聲明的事件處理方法:)中this.Load += new Microsoft.Office.Tools.Ribbon.RibbonUIEventHandler(this.Ribbon1_Load),我編寫了各種可用事件(例如,Globals.ThisAddIn.Application.DocumentChange += Application_DocumentChange;和Globals.ThisAddIn.Application.DocumentOpen += Application_DocumentOpen;),但所有可用事件都在save-as發(fā)生之前觸發(fā),而不是之后觸發(fā)。我還在此功能區(qū)加載方法中設(shè)置了一個斷點。另存為后不再執(zhí)行(我并不感到驚訝)我錯過了什么嗎?對于我的 VSTO Word 加載項,在我的功能區(qū)類中可捕獲的事件之后是否觸發(fā)了一個事件,該save-as事件將提供為save-as?更新我的代碼,反映 Cindy Meister 的回答感謝Microsoft Developer's Network 上的Joseph Fox 。我的代碼來自文檔保存事件注意:我的 VSTO 功能區(qū)類名為ClsLesCaveat. 這是一個新組,有兩個按鈕,位于現(xiàn)有Insert表中。它僅使用 VS Pro 2017 中的 VSTO 設(shè)計器創(chuàng)建。對我來說,我的功能區(qū)按鈕需要在兩種情況下禁用:1) 如果有人使用沒有 .RTF 擴展名的 Word 打開文件,我的功能區(qū)按鈕應(yīng)該被禁用2) 如果有人使用 Word 打開一個 .RTF 文件(我的按鈕已啟用),但如果他們將另存為非 .RTF 文件,我的功能區(qū)按鈕應(yīng)該禁用該非 .RTF 文檔注意:不要關(guān)心保存,因為我的功能區(qū)按鈕在打開或保存時啟用/禁用 - 否則using System;using System.IO;namespace LesCaveatAddIn{    public partial class ThisAddIn    {        private bool allowSave = false;        private void ThisAddIn_Startup(object sender, System.EventArgs e)        {            this.Application.DocumentBeforeSave += Application_DocumentBeforeSave;            this.Application.DocumentOpen += Application_DocumentOpen;        }        # On open, disable buttons, enable buttons only if file extension is .RTF        private void Application_DocumentOpen(Microsoft.Office.Interop.Word.Document Doc)        {            string extension = (Path.GetExtension(Doc.FullName)).ToUpper();            Type type = typeof(ClsLesCaveat);            ClsLesCaveat ribbon = Globals.Ribbons.GetRibbon(type) as ClsLesCaveat;            ribbon.objButtonAddFouoCaveat.Enabled = false;            ribbon.objButtonAddLesCaveat.Enabled = false;
查看完整描述

1 回答

?
翻閱古今

TA貢獻1780條經(jīng)驗 獲得超5個贊

不,沒有事件可以捕獲任何“保存”或“保存后”操作。唯一與保存有關(guān)的是DocumentBeforeSave。

DocumentBeforeSave 確實提供了讓開發(fā)人員抑制內(nèi)置 UI(SaveAs 對話框)以及取消觸發(fā)事件的操作的參數(shù)。這允許開發(fā)人員提供他們自己的保存(as)接口,這能夠確定文檔何時保存(as)并根據(jù)文件名、擴展名或任何標準采取所需的任何操作。

也可以使用 Word 的內(nèi)置 SaveAs 對話框,而不是創(chuàng)建自己的對話框,盡管這在 C# 中有點迂回,因為它需要使用 PInvoke。這是一個示例,可讓您了解其工作原理(由于我在移動設(shè)備上未進行測試):

   private void ThisDocument_BeforeSave(object sender, object e)

    {

        //Suppress the built-in SaveAs interface (dialog box)

        e.SaveAsUi = false;

        //Cancel the default action

        e.Cancel = true;

        Word.Dialog dlg = wdApplication.Dialogs[Microsoft.Office.Interop.Word.WdWordDialog.wdDialogFileSaveAs];

        //Word dialog box parameters have to be accessed via Late-Binding (PInvoke) 

        //To get the path, use the Name property

        object oDlg = (object)dlg;

        object[] oArgs = new object[1];

        oArgs[0] = (object)@"";

        dlg.Show(ref missing);

        object fileName = oDlg.GetType().InvokeMember("Name", BindingFlags.GetProperty, null, oDlg, oArgs);

    }

此處列出了可以使用的可用對話框參數(shù)。



查看完整回答
反對 回復 2022-10-23
  • 1 回答
  • 0 關(guān)注
  • 206 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號