2009-04-20 7 views

Antwort

3

Hier ist eine einfache Klasse, die Steuerelemente auf dem Formular mit einer Grenze Highlights:

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); 
     } 
    } 

Dann in Ihrem Formular, setzen Sie alles, was es zu nutzen:

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; 
    } 

Dann in der Konstruktor, erstellen Sie einfach den Textmarker:

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

Sie können dazu die Ereignisse MouseEnter/MouseLeave verwenden.

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

nicht die p Anels Rückenfarbe. Ich möchte die Hintergrundfarbe des BORDERS ändern – leora

+0

Ihre Frage lautet "die Hintergrundfarbe eines Panels oder eines ähnlichen Steuerelements". Re-Editieren Sie Ihre Frage mit korrekten Informationen, wenn Sie die richtigen Antworten wünschen. –

+0

Entschuldigung. . Ich habe die Abwärtszecke entfernt – leora