2011-06-22 34 views
1

スタートアップ時に読み込まれるVSTO Outlook 2007アドインがあります。それがロードすると、それはfollwingん:VSTO Outlookアドインが2回点火されるのはなぜですか?

Private Sub ThisAddIn_Startup() Handles Me.Startup 
     explorer = Me.Application.ActiveExplorer() 
     AddHandler Application.ItemContextMenuDisplay, AddressOf Application_ItemContextMenuDisplay 
     AddHandler Application.Startup, AddressOf Application_CommandBarMenuDisplay 
    End Sub 

次に、この後AddHandlersは、以下のん:

Sub Application_CommandBarMenuDisplay() 

      Dim cBar As Office.CommandBar = explorer.CommandBars("Standard") 
      btnCommandBarMenu = CType(cBar.Controls.Add(Office.MsoControlType.msoControlButton, Type.Missing, Type.Missing, Type.Missing, True), Office.CommandBarButton) 

      With btnCommandBarMenu 
       .BeginGroup = True 
       .Style = MsoButtonStyle.msoButtonIconAndCaption 
       .Caption = "File TNRP Email" 
       .Tag = "File TNRP Email" 
       .Picture = IPictureDisp.FromImage(My.Resources.label16) 
       .Mask = IPictureDisp.MaskFromImage(My.Resources.label16) 
      End With 

      AddHandler btnCommandBarMenu.Click, AddressOf btn_CommandBarMenuClick 

    End Sub 

Sub Application_ItemContextMenuDisplay(ByVal CommandBar As Microsoft.Office.Core.CommandBar, ByVal Selection As Microsoft.Office.Interop.Outlook.Selection) 

      btnContextMenu = CommandBar.Controls.Add(Office.MsoControlType.msoControlButton, Type.Missing, Type.Missing, Type.Missing, True) 

      With btnContextMenu 
       .BeginGroup = True 
       .Visible = True 
       .Style = MsoButtonStyle.msoButtonIconAndCaption 
       .Caption = "File TNRP Email" 
       .Tag = "File TNRP Email" 
       .Picture = IPictureDisp.FromImage(My.Resources.label16) 
       .Mask = IPictureDisp.MaskFromImage(My.Resources.label16) 
      End With 

      AddHandler btnContextMenu.Click, AddressOf btn_ContextMenuClick 

End Sub 

電子メールが送信されるとアプリが正常に動作します。しかし、私がButtonをクリックすると、addは2回実行され、コンテキストメニューを使用すると2倍の回数も発生します。

これはどういう考えですか?

答えて

1

私はこれについて完全にはわかっていませんが、ContextMenuDisplayイベントとCommandBarDisplayイベントが沈んでいるように見えます。次に、ボタンを作成してクリックイベントをシンクしているように見えます.ContextMenuDisplayイベントまたはCommandBarDisplayイベントが発生するたびにボタンのクリックイベントを何度もフックして、イベントハンドルがクリックで複数回呼び出されることを意味します。私はContextmenuまたはcommandbarが破壊され、イベントが発生するたびに再構築されるとは思わない。

ボタンを作成してイベントを1回だけシンクしたいと思うでしょう。ボタンがすでに存在しているかどうかをテストし、そうであれば何もしません。

しかし、私はハンドリング見通しイベントのvagueriesに掘ってきたので、それがしばらくしている...

0

私はC#のと私のOutlookのプラグインと同様の問題が発生しました。私は、コードをコンパイルしてデバッグすると、プラグインが私のdevディレクトリからOutlookに登録されると思います。そして、私はセットアップを実行するときに再び登録されるので、私はOutlookのアクションを開くときに2Xを起動します。私は手動で行って、ロードされたプラグインを私のdevディレクトリから削除しなければならなかった。

希望すると便利です。

関連する問題