質問: "リ・ボーン" Me.Group1.Items.Add(button03) ``` と書いた所、`Item.Add`の所で「コレクションは読み取り専用です。」とエラーが出てしまいます。 自分の書いたサンプルはそもそも動的に不特定の数のボタンを追加する仕様ではありませんがまずは1個でも追加できないかと思い書いてみたのですが果たせませんでした。 どなたかご存知の方おられましたらお助けいただけますでしょうか? よろしくお願いします。
回答: VSTOのリボンには読み取り専用になるプロパティ.aspx#ReadOnlyProperties)がいくつか存在します。`Items`自体は記載されていませんが、`Groups`や`Tabs`などの他のコレクションプロパティが指定されているので同様の仕様なのだと思われます。 なのでボタンイベントに応じて項目を増減させたい場合、ボタンの追加は諦めてリンク先に記載のある`Dynamic`プロパティを`True`に設定した`RibbonMenu`で妥協するしかないと思われます。 またボタンの追加タイミングが起動時だけでよいのであれば`Ribbon1`のコンストラクターではまだ読み取り専用となっていないので変更が可能です。 ``` ' 以下のコードをRibbon1.designer.vbからRibbon1.vbに移動する Public Sub New() MyBase.New(Globals.Factory.GetRibbonFactory()) InitializeComponent() ' TODO:メニューの変更を追加する End Sub ```