backcolor من حدود لوحة نماذج ويندوز
سؤال
هل هناك أي طريقة لتغيير BackColor
من حدود لوحة أو سيطرة مماثلة؟
أحاول "تسليط الضوء على" التحكم في المستخدم عندما أحضر الماوس فوق عنصر تحكم المستخدم.
المحلول
إليك فئة بسيطة تسلط الضوء على عناصر التحكم في النموذج مع حدود:
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;
}
ثم، في المنشئ، فقط قم بإنشاء Highlighter:
public Form1()
{
InitializeComponent();
_highlighter = new Highlighter();
Controls.Add(_highlighter);
}
نصائح أخرى
يمكنك استخدام أحداث 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;
}
لا تنتمي إلى StackOverflow