2009-07-15 21 views
2

Visual Studio 2008でExcelとWordのアドインテンプレートを使用してリボンに追加するプロジェクトを作成しましたが、共有アドインに問題があります。私はリボンに変更して追加するためにXMLファイルを使用するadd inを作成し、追加されたボタンからイベントをキャッチすることができますが、私の人生にとっては、ボタンを隠す方法や、起動して実行しています。基本的にはリボンへの参照が必要ですが、IRibbonUiを実装するオブジェクトへの参照は役に立ちません。誰も良い共有アドインの例やアドバイスを持っていますか?VSTO - リボンを変更するためのWordとExcel用の共有アドイン

答えて

2

リボンコントロールの表示を制御するには、2つの方法があります。 visibleプロパティまたはgetVisibleイベントのいずれかを使用できます。どちらの方法でも、すでに使用しているxmlファイルを変更する必要があります。

これが今、あなたの部分的なxmlファイルの場合:

<button id="MyButton" label="Hello" onAction="MyButtonOnAction"/> 

は、その後、あなたがそれを変更することにより、コントロールを非表示にすることができます:それはハードコードされて

<button id="MyButton" label="Hello" onAction="MyButtonOnAction" visible="false"/> 

これは多くの使用ではありません。近づくために、どのようなあなたに変更するためのXMLを探しています:

<button id="MyButton" label="Hello" onAction="MyButtonOnAction" getVisible="MyButtonGetVisible"/> 

そして、あなたはこの署名(C#)を持っていることを起こるMyButtonGetVisibleコールバックを作成MyButtonOnActionコールバックを行っているのと同じ方法で:

bool MyButtonGetVisible(IRibbonControl control) 

このメソッドを使用すると、ボタンを表示/非表示するかどうかによって、trueまたはfalseを返すことができます。次の質問は、MyButtonGetVisibleコールバックが、アドインが読み込まれた直後に1回だけ呼び出されることです。後でボタンを表示/非表示にしたいのですが、どのようにコールバックをトリガーするのですか?

これを実行するには、そのIRibbonUIオブジェクトを使用し、Invalidate関数を呼び出して、リボン全体を無効にしてコールバックを呼び出すことができます。より細かい制御が必要な場合は、ControlIDをパラメータとするInvalidateControl関数を呼び出すことができ、コールバックを呼び出す1つのコントロールのみを無効にします。

オンザフライでコントロールを追加することについては、私はそれが可能であるとは思わない。私はお勧めし

さらに資源: Part 1 Part 2 Part 3

+0

おかげで、InvalidateControlコールと組み合わせgetVisibleコールバックは、我々がやってしまったまさにだったこと。最後の唯一の痛みは、開いているファイルボタンをオーバーライドすると、ctrl-oショートカットが単語ではなくExcelでコードを呼び出すことです。 Excelチームがこれを実装していないことが、私たちが最もよく知ることです。 – Codezy

関連する問題