在 Word 加载项引发集合中动态添加功能区按钮是只读的

本文关键字:功能区 添加 按钮 只读 动态 加载项 Word 集合 | 更新日期: 2023-09-27 18:34:28

我对 Word 加载项相当陌生,并尝试添加功能区组。 对于每个功能区组,

我动态添加功能区菜单,然后将功能区按钮添加到组内的菜单。

得到了糟糕的工作,它似乎是okie,但每当我访问任何收藏时

例如:第1组。Items.add(new RibbonButton(((;它让我说集合是只读的。

但是当我调试集合的IsReadOnly标志设置为False时,这清楚地表明集合不是只读的?

我错过了什么。

在 Word 加载项引发集合中动态添加功能区按钮是只读的

加载

功能区后,集合将变为只读。

若要动态修改功能区控件,需要在功能区构造函数中执行此操作。

见 http://msdn.microsoft.com/en-us/library/bb608623.aspx#SettingReadOnlyProperties

您是否正在尝试将按钮添加到功能区菜单或功能区组?在您的描述中,您说过要向菜单添加按钮,但是您引用的示例是尝试将按钮添加到功能区组[我假设group1是一个组而不是菜单!

您应该能够将按钮添加到功能区菜单,但如果它是您想要的功能区组,那么您就不走运了。
下面是功能区组中 Items 属性的代码注释:

// Summary:
//     Gets the controls in the group.
//
// Returns:
//     The collection of controls in the group.
//
// Exceptions:
//   System.InvalidOperationException:
//     You try to add, remove, or replace a Microsoft.Office.Tools.Ribbon.RibbonControl
//     after the Ribbon is loaded.
IList<RibbonControl> Items { get; }

这就是您收到错误的原因,也是集合的 IsReadOnly 属性设置为 false 的原因。
设计器在创建功能区时需要能够修改功能区组中的项,但加载后无法对其进行任何修改。

注意: 如果要动态向功能区菜单添加按钮,请在功能区菜单项属性窗口中将"动态"设置为"True">(或者可以将其放在设计器代码中(,否则将再次遇到相同的异常。