Esempio n. 1
0
        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;
        }