繁体   English   中英

程序运行时如何使鼠标悬停(悬停)和单击事件

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

我制作了一个程序,在其中询问椭圆的数量,并使椭圆在c#中的不同窗口中,但是我希望将鼠标悬停在效果上,我将其称为: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);
    }

}
}

但是它不起作用。有人可以解释为什么以及如何使它在鼠标悬停(悬停)时随机更改颜色,并在单击鼠标时消失/移除吗? 我将非常感谢您的帮助!

如评论中所述,您实际上需要将事件关联到正在创建的椭圆上:

...
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方法并不会自动将它们连接起来,当我们考虑它时E1_MouseDown有意义。 窗口上可能有许多具有这些事件的对象-代码应该如何知道应该听谁的代码?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM