Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I build a VSTO (made with the Ribbon Designer, not using Ribbon XML). Is it possible to change the properties (like label) of the Tab from Ribbon1.cs ?

I even can't change the ribbon title with :

    private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
    {
        myRibbon.Label = "something";
    }
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
160 views
Welcome To Ask or Share your Answers For Others

1 Answer

The way to do this dynamically is using a callback.

In your ribbon XML:

<tab id="myTabID" getLabel="myCallback">
  ....
</tab>

In your ribbon code:

public string myCallback(IRibbonControl control)
{
    switch (control.Id)
    {
        case "myTabID":
            return "My Label";
        case "whatever else":
        default:
            return "n/a";
    }
}

The callback will execute whenever the tab is displayed, so probably on startup. When you actually want to change what's showing, you have to invalidate it:

ribbon.Invalidate();
// or
ribbon.InvalidateControl(id);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...