SPATIUM Desktop
주소복사
About Operating System Languages Tools Favorites Notice Visit TEST  
     Android (3)
     Linux (1)
     MacOS (1)
     OS (1)
     Solaris10 (15)
     Windows (1)
     Windows Server (2)
     Windows XP (3)
   ID  
   Password  
  |  
  Location United States
  IP Address 18.232.55.175
2020. 01
1234
567891011
12131415161718
19202122
23
2425
262728293031
Category  Languages, C#
Writer 김태우 Date 2016-04-05 16:54:40 Visit 1994
ComboBox(with Border) on C#
 
 
    public partial class ExCombobox : ComboBox
    {
        private const int WM_PAINT = 0xF;
        private const int WM_NC_PAINT = 0x85;
        private IntPtr hDC;
        private Graphics gdc;
        private Rectangle rectBorder;
 
        private Color borderColor = Color.Black;
        private ButtonBorderStyle borderStyle;
 
        
 
        [DllImport("user32")]
        private static extern IntPtr GetWindowDC(IntPtr hWnd);
 
        [DllImport("user32")]
        private static extern IntPtr GetDC(IntPtr hWnd);
 
        [DllImport("user32")]
        private static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
 
        [Category("Appearance")]
        public Color BorderColor
        {
            get { return this.borderColor; }
            set { this.borderColor = value; }
        }
 
        [Category("Appearance")]
        public ButtonBorderStyle BorderStyle
        {
            get { return this.borderStyle; }
            set { this.borderStyle = value; }
        }
 
        public ExCombobox()
        {
            this.hDC = GetDC(Handle);
            this.gdc = Graphics.FromHdc(hDC);
            this.rectBorder = new Rectangle(0, 0, this.Width, this.Height);
 
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
        }
 
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case WM_NC_PAINT:
                    break;
                case WM_PAINT:
                    base.WndProc(ref m);
                    ControlPaint.DrawBorder(gdc, this.rectBorder, this.borderColor, this.borderStyle);
                    break;
                default:
                    base.WndProc(ref m);
                    break;
            }
        }
 
        protected override void OnResize(EventArgs e)
        {
            this.hDC = GetDC(Handle);
            this.gdc = Graphics.FromHdc(hDC);
            this.rectBorder = new Rectangle(0, 0, this.Width, this.Height);
            Invalidate();
            base.OnResize(e);
        }
 
        public void setDataSource(Object bindingSource, String keyName, String valueName){
            this.DataSource = bindingSource;
            this.DisplayMember = keyName;
            this.ValueMember = valueName;
        }
    }
 
 
Tags  ComboBox, c#, Border
  Relation Articles
[Languages-C#] TextBox(with Border) on C# (2016-04-05 17:00:59)
[Languages-C#] ComboBox(with Border) on C# (2016-04-05 16:54:40)
[Languages-C#] Flicker해결(DoubleBuffer) on C# (2016-01-28 17:24:13)
  Your Opinion
Member ID
150 letters
Copyright (C) SPATIUM. All rights reserved.
[SPATIUM]WebMaster Mail