Backcolor de la frontière d'un panneau Windows Forms
Question
Est-il possible de changer la BackColor
de la frontière d'un panneau ou similaire contrôle?
Je suis en train de « highlight » le contrôle de l'utilisateur lorsque je passez la souris sur le contrôle de l'utilisateur.
La solution
Voici une classe simple qui met en évidence les contrôles sur le formulaire avec une bordure:
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);
}
}
Ensuite, dans votre formulaire, définissez tout à l'utiliser:
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;
}
Ensuite, dans le constructeur, il suffit de créer le surligneur:
public Form1()
{
InitializeComponent();
_highlighter = new Highlighter();
Controls.Add(_highlighter);
}
Autres conseils
Vous pouvez utiliser les événements MouseEnter / MouseLeave pour le faire.
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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow