2009-04-20 3 views
2

Есть ли способ изменить BackColor границы панели или аналогичного элемента управления?Backcolor of the BORDER панели Windows Forms

Я пытаюсь «выделить» пользовательский элемент управления, когда наводил указатель мыши на пользовательский элемент управления.

ответ

3

Вот простой класс, который выдвигает на первый план управления на форме с бордюром:

public class Highlighter : Control 
    { 
     public void SetTarget(Control c) 
     { 
      Rectangle r = c.Bounds; 
      r.Inflate(3, 3); 
      Bounds = r; 
     } 

     protected override void OnPaint(PaintEventArgs e) 
     { 
      base.OnPaint(e); 

      e.Graphics.FillRectangle(Brushes.Red, e.ClipRectangle); 
     } 
    } 

Тогда, в свою форму, установите все, чтобы использовать его:

private void Form1_Load(object sender, EventArgs e) 
    { 
     foreach (Control c in Controls) 
     { 
      c.MouseEnter += mouseEnter; 
      c.MouseLeave += mouseLeave; 
     } 
    } 

    private void mouseEnter(object sender, EventArgs e) 
    { 
     _highlighter.SetTarget(sender as Control); 
     _highlighter.Visible = true; 
    } 

    private void mouseLeave(object sender, EventArgs e) 
    { 
     _highlighter.Visible = false; 
    } 

Тогда, в конструктор, просто создайте маркер:

public Form1() 
    { 
     InitializeComponent(); 
     _highlighter = new Highlighter(); 
     Controls.Add(_highlighter); 
    } 
0

Для этого вы можете использовать события MouseEnter/MouseLeave.

private void panel1_MouseEnter(object sender, EventArgs e) 
    { 
     panel1.BackColor = System.Drawing.Color.Red; 
    } 

    private void panel1_MouseLeave(object sender, EventArgs e) 
    { 
     panel1.BackColor = System.Drawing.Color.Empty; 
    } 
+0

не p обратная сторона анеля. Я хочу изменить обратную сторону BORDER – leora

+0

. Вы задаете вопрос о «цветке панели или аналогичном контроле». Измените свой вопрос с правильной информацией, если вы хотите получить правильные ответы –

+0

извините. , я удалил тик – leora