首页 > 解决方案 > WPF C# Mouse Down 事件以编程方式在 void

问题描述

我正在尝试在 void 内进行鼠标按下事件,但是我所有的尝试都没有成功,这就是我现在所拥有的:

           void newEllipse
           {
                Ellipse pic = new Ellipse()
                ImageBrush img = new ImageBrush();
                img.ImageSource = new BitmapImage(new Uri(gamePic));
                pic.Fill = img;                  

                pic.MouseDown += new MouseButtonEventHandler(object _, MouseButtonEventHandler e)
                {
                     //Stuff here
                };
           }

但是,这不起作用,我不确定还能做什么。有人帮忙吗?

标签: c#wpfeventsmousedown

解决方案


首先,您的问题不清楚,并且正如评论中指出的那样没有多大意义。该术语在您实际所做的事情中是错误的,但并不是什么大问题,它需要与您实际在做的事情保持一致。

例如评论中提到的@quaabaam:

如何将事件附加到动态生成的对象

现在已经不碍事了,您要做的是向该新创建的 object 添加一个事件处理程序pic。有几种方法可以做到这一点,但我将列出一个简单的方法来处理该事件。

 pic.MouseDown += (sender, e) => { //Stuff here }

这是一个导致委托函数的 lambda 表达式sender是实际的对象,e是实际的事件参数。处理程序需要这两个参数,即使您可能不使用它们,也必须包含它们。

使用上述方法的副作用是,当您需要删除处理程序时,它可能会将原始处理程序留在那里,并且可能会造成泄漏,因为它不保留对该委托的引用。


推荐阅读