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; }