2017-10-04 22 views
0

VB.Netを使用してVSTOを構築しようとしています。 私は尋ねました、VB.Netでなければなりません。VB.Netの複数のVSTOコンテキストメニューに対応

アプリケーションレベルADDINは私の課題は、子どもの不確定数を持って、コンテキストメニューを構築しようとしているEXCEL

をターゲットに。

私はメニューを作ることができますが、現在のところ、最後のボタンのためにonClickを起動するだけです。

私はこれをかなり徹底的に研究しており、VBの例は見つかりません。 VBには、単純なコンテキストメニューを追加する例がたくさんあります。

は、C#の例がありますが、あなたは、私は、VBでそれゆえの質問にそれを行う方法を見つけ出すためには至っていない。この

cb.Click += cbButton_Clicked; 

ような何かを。 コードの全体は以下のとおりです。私は最初の5つのボタンのどれかをクリックすることができ、何も起こりません。最後のものをクリックすると、期待どおりにメッセージボックスが起動します。

不確定な数のメニュー項目があるので、X#ハンドラを追加するだけではありません。

Public Class ThisAddIn 
Dim WithEvents cb As CommandBarButton 
    Dim TradeName As String = "MyMenu" 
    Private Sub ThisAddIn_Startup() Handles Me.Startup 

     ' AddHandler Application.WorkbookBeforeSave, AddressOf Application_WorkbookBeforeSave 

     AddHandler Application.NewWorkbook, AddressOf ThisWorkbook_NewWorkbook 

    End Sub 


    Private Sub ThisWorkbook_NewWorkbook(wb As Microsoft.Office.Interop.Excel.Workbook) 

     AddMenu2() 
    End Sub 



    Public Function GetCellContextMenu() As Office.CommandBar 

     Return Application.CommandBars("Cell") 
    End Function 


    Public Sub AddMenu2() 
     Dim Bar As Microsoft.Office.Core.CommandBar 
     Dim NewControl As Microsoft.Office.Core.CommandBarControl 

     Try 

      Application.CommandBars("Cell").Controls(TradeName).Delete() 
     Catch ex As Exception 

     End Try 


     Bar = Application.CommandBars("Cell") 
     NewControl = Bar.Controls.Add(Microsoft.Office.Core.MsoControlType.msoControlPopup, Id:=1, Temporary:=True) 

     With NewControl 
      .Caption = TradeName 
      .BeginGroup = True 
      .TooltipText = TradeName & " Queries." 
     End With 

     Dim ag As New fvConnectionSuperAg 
     Dim l As List(Of fvConnection) = ag.Items 

     For Each conn As fvConnection In l 

      cb = NewControl.Controls.Add(Microsoft.Office.Core.MsoControlType.msoControlButton) 
      With cb 
       .Caption = conn.Name.Value 
       .FaceId = 218 
        ' HERE IS WHERE I THINK I SHOULD CONNECT THE HANDLER 
      End With 

End Sub 

    Private Sub cb_Click(Ctrl As CommandBarButton, ByRef CancelDefault As Boolean) Handles cb.Click 
     MsgBox(Ctrl.Caption, MsgBoxStyle.ApplicationModal, "Fast View") 
    End Sub 
End Class 

答えて

0

が失敗したことはありません、上の投稿はSOあなたは、多くの場合、答えにつながるあなたの頭の中で質問を、明確になります....

私はこれに答えを見つけましたプログラムでイベントハンドラを追加する方法について説明した記事。 VSTOとはまったく関係ありません。ここ

http://www.thescarms.com/dotnet/EventHandler.aspx

は、右のボタンを作成した後、前の投稿 違いの のAddHandlerコールからの抜粋です。

cb = NewControl.Controls.Add (Microsoft.Office.Core.MsoControlType.msoControlButton) 
      AddHandler cb.Click, AddressOf cb_Click 
      With cb 
       .Caption = conn.Name.Value 
       .FaceId 
      End With 
関連する問題