什么是"适当的"方法来检索到功能区对象的引用? [英] What's the "proper" way to retrieve a reference to a ribbon object?

查看:223
本文介绍了什么是"适当的"方法来检索到功能区对象的引用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于VSTO工作簿的项目,有没有从ThisWorkbook类检索到功能区对象的引用的最佳做法?

For a VSTO workbook project, is there a best practice for retrieving a reference to the Ribbon object from the ThisWorkbook class?

下面是我在做什么:在我区类,我创建了一个名为 InvalidateControl(字符串控件ID)的公共方法。我需要根据当某个工作簿级事件触发调用该方法从ThisWorkbook类。但我可以看到的唯一途径获得到色带对象的引用是做到这一点...

Here's what I'm doing: In my Ribbon class, I created a public method called InvalidateControl(string controlID). I need to call that method from the ThisWorkbook class based on when a certain workbook level event fires. But the only way I can see to "get" a reference to that Ribbon object is to do this...

    // This is all in the ThisWorkbook class
    Ribbon ribbon;
    protected override IRibbonExtensibility CreateRibbonExtensibilityObject()
    {
        this.ribbon = new Ribbon();
        return this.ribbon;
    }



...这似乎有点臭。我的意思是,我必须重写 CreateRibbonExtensibilityObject()不分;所有我做的超越所保持的本地引用色带,所以我可以调用的方法反对。但它并不适合我。是否有其他更好的方式来获得ThisWorkbook类中的参考?或者,这是很可以接受的?

...which seems a little smelly. I mean, I have to override CreateRibbonExtensibilityObject() regardless; all I'm doing beyond that is maintaining a local reference to the ribbon so I can call methods against it. But it doesn't feel right. Is there another, better way to get that reference in the ThisWorkbook class? Or is this pretty acceptable?

谢谢!

推荐答案

一个多简单的方法是什么地方创建一个全局静态变量(如的ThisWorkbook)

A much simpler way is to create a global static variable somewhere (e.g. in ThisWorkbook).

public static Ribbon ribbonref;



然后在功能区类的代码,在初始化事件的事件处理程序(我觉得方法被称为 Ribbon1_StartUp(),但我不知道),设置变量:

Then in the code of the Ribbon class, in the event handler for the initialization event (I think the method is called Ribbon1_StartUp() but I'm not sure), set the variable:

private void Ribbon1_StartUp(object sender, EventArg e)
{
    ThisWorkbook.ribbonref = this;
}



(从内存中这么写可能不完全正确)

(written from memory so may not be exactly right)

然后,您可以使用 ribbonref 来访问您的丝带实例。

You can then use ribbonref to access your ribbon instance.

这篇关于什么是"适当的"方法来检索到功能区对象的引用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆