private void Inspectors_ListChanged(object sender, ListChangedEventArgs e) { pContent.Controls.Clear(); Inspector ins; for (int i = _model.Inspectors.Count - 1; i >= 0; i--) { ins = _model.Inspectors[i]; var expander = new Expander(); expander.Dock = DockStyle.Top; Image icon = null; if (ins.ExportName != null) { var iconName = Inspector.IconName(ins.ExportName); if (iconName != null) icon = imageList.Images[iconName]; } ExpanderHelper.CreateLabelHeader(expander, ins.Tag.ToString(), SystemColors.ActiveBorder, imageList.Images["Collapse"], imageList.Images["Expand"], icon); ins.Dock = DockStyle.Top; expander.Content = ins; pContent.Controls.Add(expander); } }
public static Label CreateLabelHeader(Expander expander, string text, Color backColor, Image collapsedImage = null, Image expandedImage = null, Image icon = null, int height = 25, Font font = null) { var panel = new Panel(); panel.Height = height; var headerLabel = new Label(); headerLabel.Text = text; headerLabel.AutoSize = false; if (font != null) headerLabel.Font = font; headerLabel.TextAlign = ContentAlignment.MiddleLeft; if (collapsedImage != null && expandedImage != null) { headerLabel.Image = collapsedImage; headerLabel.ImageAlign = ContentAlignment.MiddleRight; } headerLabel.BackColor = backColor; headerLabel.Dock = DockStyle.Fill; panel.Controls.Add(headerLabel); if (icon != null) { var iconLabel = new Label(); iconLabel.Dock = DockStyle.Left; iconLabel.Image = icon; iconLabel.Width = height; iconLabel.BackColor = backColor; iconLabel.ImageAlign = ContentAlignment.MiddleLeft; panel.Controls.Add(iconLabel); } if (collapsedImage != null && expandedImage != null) { expander.StateChanged += delegate { headerLabel.Image = expander.Expanded ? collapsedImage : expandedImage; }; } headerLabel.Click += delegate { expander.Toggle(); }; expander.Header = panel; return headerLabel; }