当程序 运行 时,我如何让我的鼠标悬停在(悬停)和单击事件上

How do i make my Mouse over(hover)and on click events while the program is running

我制作了一个程序,您可以在其中询问省略号的数量,它使它们在 c# 中处于不同的 window,但我想要鼠标悬停效果 - 我理解为:MouseEnter 和一个 onclick 事件,据我所知称为 MouseDown,但我制作了一个椭圆数组并尝试了以下操作:

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

}
}

但是 work.Can 没有人解释为什么以及如何让它在鼠标悬停时随机改变颜色,并且 disappear/be 在鼠标点击时移除? 如果有任何帮助,我将不胜感激!

如评论中所述,您需要实际将事件连接到您正在创建的省略号:

...
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]);
...

简单地创建 E1_MouseEnterE1_MouseDown 方法并不会自动将它们连接起来,当我们考虑它时,这是有道理的。 Window 上可能有任意数量的对象具有这些事件 - 代码应该如何知道应该听谁的?