| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | using System.Drawing;using System.Windows.Forms;namespace Optimizer{    public sealed class MoonSelect : ComboBox    {        private const int WM_PAINT = 0xF;        private int buttonWidth = SystemInformation.HorizontalScrollBarArrowWidth;        Color borderColor = Color.Blue;        public Color BorderColor        {            get { return borderColor; }            set { borderColor = value; Invalidate(); }        }        protected override void WndProc(ref Message m)        {            base.WndProc(ref m);            if (m.Msg == WM_PAINT && DropDownStyle != ComboBoxStyle.Simple)            {                using (var g = Graphics.FromHwnd(Handle))                {                    var adjustMent = 0;                    if (FlatStyle == FlatStyle.Popup ||                       (FlatStyle == FlatStyle.Flat &&                       DropDownStyle == ComboBoxStyle.DropDownList))                        adjustMent = 1;                    var innerBorderWisth = 3;                    var innerBorderColor = BackColor;                    if (DropDownStyle == ComboBoxStyle.DropDownList &&                        (FlatStyle == FlatStyle.System || FlatStyle == FlatStyle.Standard))                        innerBorderColor = Color.FromArgb(0xCCCCCC);                    if (DropDownStyle == ComboBoxStyle.DropDownList && !Enabled)                        innerBorderColor = SystemColors.Control;                    if (DropDownStyle == ComboBoxStyle.DropDownList || Enabled == false)                    {                        using (var p = new Pen(innerBorderColor, innerBorderWisth))                        {                            p.Alignment = System.Drawing.Drawing2D.PenAlignment.Inset;                            g.DrawRectangle(p, 1, 1,                                Width - buttonWidth - adjustMent - 1, Height - 1);                        }                    }                    using (var p = new Pen(BorderColor))                    {                        g.DrawRectangle(p, 0, 0, Width - 1, Height - 1);                        g.DrawLine(p, Width - buttonWidth - adjustMent,                            0, Width - buttonWidth - adjustMent, Height);                    }                }            }        }    }}
 |