private void OnComponentRemoving(object sender, ComponentEventArgs e)
{
// If our cluster is being removed
if (e.Component == _ribbonCluster)
{
// Need access to host in order to delete a component
IDesignerHost host = (IDesignerHost)GetService(typeof(IDesignerHost));
// We need to remove all items from the cluster
for (int j = _ribbonCluster.Items.Count - 1; j >= 0; j--)
{
IRibbonGroupItem item = _ribbonCluster.Items[j] as IRibbonGroupItem;
if (item != null)
{
_ribbonCluster.Items.Remove(item);
host.DestroyComponent(item as Component);
}
else
{
IRibbonGroupContainer container = _ribbonCluster.Items[j] as IRibbonGroupContainer;
_ribbonCluster.Items.Remove(container);
host.DestroyComponent(container as Component);
}
}
}
}