3

私はWordアドインにかなり慣れておらず、リボングループを追加しようとしています。各RibbonGroupに対して、RibbonMenuを動的に追加してから、グループ内のメニューにRibbonButtonsを追加します。

私は大げさな仕事をしました、そしてそれは大丈夫のようです、しかし私がどんなコレクションにでもアクセスするときはいつでも

例:group1.Items.add(new RibbonButton()); コレクションは読み取り専用だと言われます。

しかし、デバッグしたときに、コレクションのIsReadOnlyフラグがFalseに設定されていて、コレクションが読み取り専用ではないことを明確に示していますか?

私は何が欠けています。

4

2 に答える 2

7

リボンが読み込まれると、コレクションは読み取り専用になります。

リボンコントロールを動的に変更するには、リボンコンストラクターで変更する必要があります。

http://msdn.microsoft.com/en-us/library/bb608623.aspx#SettingReadOnlyPropertiesを参照してください

于 2012-11-12T18:52:23.573 に答える
2

RibbonMenuまたはRibbonGroupにボタンを追加しようとしていますか?あなたの説明では、メニューにボタンを追加したいと言っていますが、引用した例は、リボングループにボタンを追加しようとしています[ group1はメニューではなくグループだと思います!]。

RibbonMenuにボタンを追加できるはずですが、RibbonGroupが必要な場合は、運が悪いです。
RibbonGroupの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に設定されている理由でもあります。
Designerは、リボンの作成時にRibbonGroup内のアイテムを変更できる必要がありますが、一度ロードされると、変更を加えることはできません。

注: RibbonMenuにボタンをその場で追加する場合は、RibbonMenuアイテムのプロパティウィンドウでDynamicをTrueに設定します(またはDesignerコードに配置することもできます)。そうしないと、同じ例外が再び発生します。

于 2012-05-18T08:48:13.993 に答える