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 3.16.69.143
2024. 04
123456
78910111213
1415161718
19
20
21222324252627
282930
Category  Languages, C#
Writer 김태우 Date 2016-04-05 16:54:40 Visit 3317
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