2017-11-15 3 views
0

Ich habe ein Programm, wo Sie die Anzahl der Ellipsen fragen und es macht sie in einem anderen Fenster in C#, aber ich möchte haben eine Maus über Effekt, die ich verstanden heißt: MouseEnter- und ein Onclick-Ereignis, die ich genannt verstanden MouseDown-, aber ich habe eine Reihe von Ellipsen und ich versuchte, die folgenden:Wie mache ich meine Maus über (Hover) und auf Ereignisse klicken, während das Programm ausgeführt wird

namespace WpfApp1 
{ 
/// <summary> 
/// Interaction logic for Window2.xaml 
/// </summary> 
public partial class Window2 : Window 
{ 
    int numOfElipses; 
    public Window2() 
    { 
     InitializeComponent(); 
     numOfElipses= MainWindow.numOfElipse; 
     Ellipse[] ellipsePoints = new Ellipse[numOfElipses]; 
     Random rnd = new Random(); 
     for (int i=0;i<numOfElipses; i++) 
     { 
      SolidColorBrush brush = 
           new SolidColorBrush(
            Color.FromRgb(
            (byte)rnd.Next(255), 
            (byte)rnd.Next(255), 
            (byte)rnd.Next(255) 
            )); 
      var top = rnd.Next(0, 280); 
      var left = rnd.Next(0, 450); 
      ellipsePoints[i] = new Ellipse(); 
      ellipsePoints[i].Width = 40; 
      ellipsePoints[i].Height = 40; 
      Canvas.SetTop(ellipsePoints[i], i); 
      Canvas.SetLeft(ellipsePoints[i], i*45); 
      ellipsePoints[i].Fill = brush; 
      c1.Children.Add(ellipsePoints[i]); 
     } 
    } 
    private void E1_MouseEnter(object sender, MouseEventArgs e) 
    { 
     Random r = new Random(); 
     Ellipse ellipsePoints = (Ellipse)sender; 
     ellipsePoints.Fill = new 
     SolidColorBrush(Color.FromRgb((byte)r.Next(255), (byte)r.Next(255), 
     (byte)r.Next(255))); 
    } 
    private void E1_MouseDown(object sender, MouseButtonEventArgs e) 
    { 
     c1.Children.Remove((Ellipse)sender); 
    } 

} 
} 

aber es funktioniert nicht Kann jemand erklären, warum und wie kann ich es ändern Farbe auf einer Maus über (Hover) nach dem Zufallsprinzip und verschwinden/entfernt werden mit einem Mausklick? Ich würde wirklich jede Hilfe schätzen!

+0

Funktioniert nicht, ist ein bisschen unklar. Was passiert, wenn Sie versuchen, dieses Programm auszuführen? – MrPaulch

+1

Haben Sie die Ereignisse tatsächlich verkabelt? Das Erstellen der Methoden wird nichts bewirken. – TyCobb

+0

Wenn ich versuche, es auszuführen, kann ich die Ellipsen in verschiedenen (zufälligen) Farben sehen, wie ich es in der Schleife gemacht habe, aber wenn ich über eine der Ellipsen schwebe oder auf sie klicke passiert nichts. So funktioniert die Schleife und alles funktioniert Ereignis nicht. vielleicht erkennt es das Objekt, auf dem ich gerade bin, nicht, obwohl ich dachte, der Absender sollte sich darum kümmern. – Karoline

Antwort

1

Wie in den Kommentaren erwähnt, müssen Sie tatsächlich die Ereignisse bis Haken an die Ellipsen Sie erstellen: sense

... 
ellipsePoints[i].MouseEnter += E1_MouseEnter; // "hook up" the Mouse Enter event 
ellipsePoints[i].MouseDown += E1_MouseDown;  // "hook up" the Mouse Down event 
c1.Children.Add(ellipsePoints[i]); 
... 

Einfach Erstellen der E1_MouseEnter und E1_MouseDown Methoden nicht automatisch verdrahten sie auf, und das macht wenn wir darüber nachdenken. Es könnte eine beliebige Anzahl von Objekten auf dem Fenster geben, die diese Ereignisse haben - wie soll der Code wissen, wer hören sollte?

Verwandte Themen