// ********************************* // Message from Original Author: // // 2008 Jose Menendez Poo // Please give me credit if you use this code. It's all I ask. // Contact me for more info: menendezpoo@gmail.com // ********************************* // // Original project from http://ribbon.codeplex.com/ // Continue to support and maintain by http://officeribbon.codeplex.com/ using System.Collections.Generic; using System.ComponentModel; namespace System.Windows.Forms { public class RibbonButtonCollection : RibbonItemCollection { internal RibbonButtonCollection(RibbonButtonList list) { OwnerList = list; } /// /// Gets the list that owns the collection (If any) /// [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public RibbonButtonList OwnerList { get; } /// /// Checks for the restrictions that buttons should have on the RibbonButton List /// /// private void CheckRestrictions(RibbonButton button) { if (button == null) throw new ArgumentNullException(nameof(button), "The RibbonButtonList only accepts button in the Buttons collection"); //if (!string.IsNullOrEmpty(button.Text)) // throw new ArgumentException("The buttons on the RibbonButtonList should have no text"); if (button.Style != RibbonButtonStyle.Normal) throw new ArgumentException("The only style supported by the RibbonButtonList is Normal"); } /// /// /// Adds the specified item to the collection /// public override void Add(RibbonItem item) { CheckRestrictions(item as RibbonButton); item.SetOwner(Owner); item.SetOwnerPanel(OwnerPanel); item.SetOwnerTab(OwnerTab); item.SetOwnerItem(OwnerItem); item.Click += OwnerList.item_Click; base.Add(item); } /// /// /// Adds the specified range of items /// /// Items to add public override void AddRange(IEnumerable items) { foreach (RibbonItem item in items) { CheckRestrictions(item as RibbonButton); item.SetOwner(Owner); item.SetOwnerPanel(OwnerPanel); item.SetOwnerTab(OwnerTab); item.SetOwnerItem(OwnerItem); } base.AddRange(items); } /// /// /// Inserts the specified item at the desired index /// /// Desired index of the item /// Item to insert public override void Insert(int index, RibbonItem item) { CheckRestrictions(item as RibbonButton); item.SetOwner(Owner); item.SetOwnerPanel(OwnerPanel); item.SetOwnerTab(OwnerTab); item.SetOwnerItem(OwnerList); base.Insert(index, item); } } }