2016-08-16 4 views

答えて

2

私は、複数のアドインでのイベントの順序についての具体的な何かを見つける(が、私は数年前それについて何かを読んだと信じて)いなかったので、私は簡単なテストに

をしたI私はExcelがアルファベット順に実行されている場合を知りたいと思ったとして、私はアドイン私はができセットの一つで、それをランダムな名前を与えたこのコードそれらの

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
{   
    this.Application.WorkbookBeforeSave += Application_WorkbookBeforeSave; 
} 

void Application_WorkbookBeforeSave(Excel.Workbook Wb, bool SaveAsUI, ref bool Cancel) 
{ 
    System.Windows.Forms.MessageBox.Show("Add-in 1"); 
} 

一つで3エクセルアドインを作成しましたセル画=真

は、私はなぜ知らないが、Excelは常に、ExcelAddin 2最初の発射後、ExcelAddin 1AAExcelAddinに仕上げました。私は再構築しようとしました(私はまた、私の解決策を最初に洗浄しました)異なる順序では、順序はまだ同じだった(非常に最初のアドインがExcelAddin 1だったことに注意してください) Excelと押されたCtrl + S

上記に基づいて、コード内に特定のアドインの順序を想定したロジックがあってはいけないと言います。新しいアドインが注文を破るかどうかはわかりません。

また、あなたは、キャンセルイベントのいずれかを使用する場合(は引数がをキャンセルしている)ことを念頭に置いておくと、あなたはそれを取り消し(キャンセルを=真)その後、他のすべてのアドインがイベントを受け取ることになりますし、まだ意志それを実行しますが、Cancelフラグは前のものからtrueに設定されます。

私のケースでは、最初に起動したアドイン(ExcelAddin 2)に設定し、他の2つのアドインでもイベントを受信しましたが、保存がキャンセルされて保存されませんでした最初の1つ。

+0

精巧なテストでうれしい。私はあなたが言ったことを疑った。私はなぜこれが文書化されていないのだろうと思う。私たちが期待できるものを知っていることは素晴らしいことです。 –

関連する問題