/// <summary> /// Adds the specified item to the collection /// </summary> public void Add(RibbonButton item) { CheckRestrictions(item as RibbonButton); item.SetOwner(Owner); item.SetOwnerPanel(OwnerPanel); item.SetOwnerTab(OwnerTab); item.SetOwnerItem(OwnerList); base.Add(item); }
/// <summary> /// Checks for the restrictions that buttons should have on the RibbonButton List /// </summary> /// <param name="button"></param> private void CheckRestrictions(RibbonButton button) { if (button == null) throw new ApplicationException("The RibbonButtonList only accepts button in the Buttons collection"); //if (!string.IsNullOrEmpty(button.Text)) // throw new ApplicationException("The buttons on the RibbonButtonList should have no text"); if (button.Style != RibbonButtonStyle.Normal) throw new ApplicationException("The only style supported by the RibbonButtonList is Normal"); }
private void InitLists() { Image[] images = new Image[255]; RibbonProfessionalRenderer rend = new RibbonProfessionalRenderer(); BackColor = rend.ColorTable.RibbonBackground; Random r = new Random(); #region Color Squares using (GraphicsPath path = RibbonProfessionalRenderer.RoundRectangle(new Rectangle(3, 3, 26, 26), 4)) { using (GraphicsPath outer = RibbonProfessionalRenderer.RoundRectangle(new Rectangle(0, 0, 32, 32), 4)) { for (int i = 0; i < images.Length; i++) { Bitmap b = new Bitmap(32, 32); using (Graphics g = Graphics.FromImage(b)) { g.SmoothingMode = SmoothingMode.AntiAlias; using (SolidBrush br = new SolidBrush(Color.FromArgb(255, i * (255 / images.Length), 0))) { g.FillPath(br, path); } using (Pen p = new Pen(Color.White, 3)) { g.DrawPath(p, path); } g.DrawPath(Pens.Wheat, path); g.DrawString(Convert.ToString(i + 1), Font, Brushes.White, new Point(10, 10)); } images[i] = b; RibbonButton btn = new RibbonButton(); btn.Image = b; lst.Buttons.Add(btn); } } } //lst.DropDownItems.Add(new RibbonSeparator("Available styles")); RibbonButtonList lst2 = new RibbonButtonList(); for (int i = 0; i < images.Length; i++) { RibbonButton btn = new RibbonButton(); btn.Image = images[i]; lst2.Buttons.Add(btn); } lst.DropDownItems.Add(lst2); lst.DropDownItems.Add(new RibbonButton("Save selection as a new quick style...")); lst.DropDownItems.Add(new RibbonButton("Erase Format")); lst.DropDownItems.Add(new RibbonButton("Apply style...")); #endregion #region Theme Colors RibbonButton[] buttons = new RibbonButton[30]; int square = 16; int squares = 4; int sqspace = 2; for (int i = 0; i < buttons.Length; i++) { #region Create color squares Bitmap colors = new Bitmap((square + sqspace) * squares, square + 1); string[] colorss = new string[squares]; using (Graphics g = Graphics.FromImage(colors)) { for (int j = 0; j < 4; j++) { Color sqcolor = GetRandomColor(r); colorss[j] = sqcolor.Name; using (SolidBrush b = new SolidBrush(sqcolor)) { g.FillRectangle(b, new Rectangle(j * (square + sqspace), 0, square, square)); } g.DrawRectangle(Pens.Gray, new Rectangle(j * (square + sqspace), 0, square, square)); } } #endregion buttons[i] = new RibbonButton(colors); buttons[i].Text = string.Join(", ", colorss);; buttons[i].MaxSizeMode = RibbonElementSizeMode.Medium; buttons[i].MinSizeMode = RibbonElementSizeMode.Medium; } RibbonButtonList blst = new RibbonButtonList(buttons); blst.FlowToBottom = false; blst.ItemsSizeInDropwDownMode = new Size(1, 10); itemColors.DropDownItems.Insert(0, blst); itemColors.DropDownResizable = true; #endregion }
public override void SetBounds(System.Drawing.Rectangle bounds) { base.SetBounds(bounds); #region Assign control buttons bounds if (ScrollType != ListScrollType.Scrollbar) { #region Custom Buttons int cbtns = 3; // Canvas is RibbonDropDown ? 2 : 3; int buttonHeight = bounds.Height / cbtns; int buttonWidth = _controlButtonsWidth; _buttonUpBounds = Rectangle.FromLTRB(bounds.Right - buttonWidth, bounds.Top, bounds.Right, bounds.Top + buttonHeight); _buttonDownBounds = Rectangle.FromLTRB(_buttonUpBounds.Left, _buttonUpBounds.Bottom, bounds.Right, _buttonUpBounds.Bottom + buttonHeight); if (cbtns == 2) { _buttonDropDownBounds = Rectangle.Empty; } else { _buttonDropDownBounds = Rectangle.FromLTRB(_buttonDownBounds.Left, _buttonDownBounds.Bottom, bounds.Right, bounds.Bottom + 1); } _thumbBounds.Location = Point.Empty; #endregion } else { #region Scrollbar int bwidth = ThumbBounds.Width; int bheight = ThumbBounds.Width; _buttonUpBounds = Rectangle.FromLTRB(bounds.Right - bwidth, bounds.Top, bounds.Right, bounds.Top + bheight); _buttonDownBounds = Rectangle.FromLTRB(_buttonUpBounds.Left, bounds.Height - bheight, bounds.Right, bounds.Height); _buttonDropDownBounds = Rectangle.Empty; _thumbBounds.X = _buttonUpBounds.Left; #endregion } _contentBounds = Rectangle.FromLTRB(bounds.Left, bounds.Top, _buttonUpBounds.Left, bounds.Bottom); #endregion #region Assign buttons regions _buttonUpEnabled = _offset < 0; if (!_buttonUpEnabled) { _offset = 0; } _buttonDownEnabled = false; int curLeft = ContentBounds.Left + 1; int curTop = ContentBounds.Top + 1 + _offset; int maxBottom = curTop; // int.MinValue; int iniTop = curTop; foreach (RibbonItem item in Buttons) { item.SetBounds(Rectangle.Empty); } for (int i = 0; i < Buttons.Count; i++) { RibbonButton button = Buttons[i] as RibbonButton; if (button == null) { break; } if (curLeft + button.LastMeasuredSize.Width > ContentBounds.Right) { curLeft = ContentBounds.Left + 1; curTop = maxBottom + 1; } button.SetBounds(new Rectangle(curLeft, curTop, button.LastMeasuredSize.Width, button.LastMeasuredSize.Height)); curLeft = button.Bounds.Right + 1; maxBottom = Math.Max(maxBottom, button.Bounds.Bottom); if (button.Bounds.Bottom > ContentBounds.Bottom) { _buttonDownEnabled = true; } _jumpDownSize = button.Bounds.Height; _jumpUpSize = button.Bounds.Height; } #endregion #region Adjust thumb size double contentHeight = maxBottom - iniTop; double viewHeight = bounds.Height; if (contentHeight > viewHeight && contentHeight != 0) { double viewPercent = contentHeight > viewHeight ? viewHeight / contentHeight : 0.0; double availHeight = ButtonDownBounds.Top - ButtonUpBounds.Bottom; double thumbHeight = Math.Ceiling(viewPercent * availHeight); if (thumbHeight < 30) { if (availHeight >= 30) { thumbHeight = 30; } else { thumbHeight = availHeight; } } _thumbBounds.Height = Convert.ToInt32(thumbHeight); fullContentBounds = Rectangle.FromLTRB(ContentBounds.Left, iniTop, ContentBounds.Right, maxBottom); _scrollBarEnabled = true; UpdateThumbPos(); } else { _scrollBarEnabled = false; } #endregion }