2017-02-11 4 views
0

Мне нужно нарисовать пользовательскую внешнюю границу для ComboBox с DropDownStyle = DropDownList, когда comboBox активен, например. want the combobox to appear like this imageКак создать пользовательскую внешнюю границу для ComboBox с DropDownStyle (DropDownList)

Я пробовал WndProc, но он дает ошибку в DropDownList Style.

ответ

0

Я действительно мало знаю о стилях combobox в WinForms, но вы можете использовать System.Drawings.Graphics, чтобы делать именно то, что вы хотите. Проверьте следующий фрагмент кода:

public partial class Form1 : Form 
{ 
    System.Drawing.Graphics graphics; 
    System.Drawing.Rectangle rectangle; 

    public Form1() 
    { 
     InitializeComponent(); 
     comboBox1.Enter += ComboBox1_Enter; 
     comboBox1.Leave += ComboBox1_Leave; 
    } 

    private void ComboBox1_Leave(object sender, EventArgs e) 
    { 
     graphics.Clear(this.BackColor); 
    } 

    private void ComboBox1_Enter(object sender, EventArgs e) 
    { 
     ChangeActiveControlStyle((Control)sender); 
    } 

    private void ChangeActiveControlStyle(Control control) 
    { 
     graphics = this.CreateGraphics();   
     rectangle = new System.Drawing.Rectangle(control.Location.X -2, control.Location.Y-2, control.Width+4, control.Height+4); 
     graphics.FillRectangle(Brushes.Yellow, rectangle); 
    } 
}