リボンオブジェクトへの参照を取得する「適切な」方法は何ですか?
-
25-09-2019 - |
質問
VSTOワークブックプロジェクトの場合、Thisworkbookクラスからリボンオブジェクトへの参照を取得するためのベストプラクティスはありますか?
これが私がやっていることです:私のリボンクラスで、私は呼ばれる公開方法を作成しました InvalidateControl(string controlID)
. 。特定のワークブックレベルのイベントが発生する時期に基づいて、Thisworkbookクラスからその方法を呼び出す必要があります。しかし、私がそのリボンオブジェクトへの参照を「取得」することを見ることができる唯一の方法は、これを行うことです...
// This is all in the ThisWorkbook class
Ribbon ribbon;
protected override IRibbonExtensibility CreateRibbonExtensibilityObject()
{
this.ribbon = new Ribbon();
return this.ribbon;
}
...それは少し臭いのようです。つまり、私はオーバーライドしなければなりません CreateRibbonExtensibilityObject()
関係なく;私がそれを超えてしているのは、リボンへのローカル参照を維持することだけなので、それに対してメソッドを呼び出すことができます。しかし、それは正しいとは感じません。 Thisworkbookクラスでその参照を取得するためのもう1つのより良い方法はありますか?それともこれはかなり受け入れられますか?
ありがとう!
解決
はるかに簡単な方法は、どこかでグローバルな静的変数を作成することです(この作業員など)。
public static Ribbon ribbonref;
次に、リボンクラスのコードで、初期化イベントのイベントハンドラーで(この方法は呼ばれていると思います Ribbon1_StartUp()
しかし、私にはわかりません)、変数を設定します。
private void Ribbon1_StartUp(object sender, EventArg e)
{
ThisWorkbook.ribbonref = this;
}
(記憶から書かれているので、正確には正しくないかもしれません)
その後、使用できます ribbonref
リボンインスタンスにアクセスします。
他のヒント
これを見てください MSDN Globalsオブジェクトの使用を示すページ:
Globals.Ribbons.MyRibbon.MyObject.Text = "test";