WPF C# Mouse Down 事件以编程方式无效
WPF C# Mouse Down event programattically in a 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
};
}
但是这不起作用,我不确定还能做什么。有人帮忙吗?
首先,您的问题并不明确,也没有像评论中指出的那样有意义。术语在你实际做的事情上是错误的,但不是很大,它需要与你实际做的事情保持一致。
例如评论中提到的@quaabaam:
How to attach an event to a dynamically generated object
现在一切都结束了,您要做的是向新创建的对象添加一个事件处理程序 pic
。有几种方法可以做到这一点,但我将列出一个可以处理该事件的简单方法。
pic.MouseDown += (sender, e) => { //Stuff here }
这是一个lambda expression that results in a delegate function。 sender
是实际对象,e
是实际事件参数。处理程序需要这两个参数,即使您可能不使用它们也必须包括在内。
使用上述方法的副作用是,当您需要删除处理程序时,它可能会将原始处理程序留在那里并可能造成泄漏,因为它不保留对该委托的引用。
我正在尝试在 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
};
}
但是这不起作用,我不确定还能做什么。有人帮忙吗?
首先,您的问题并不明确,也没有像评论中指出的那样有意义。术语在你实际做的事情上是错误的,但不是很大,它需要与你实际做的事情保持一致。
例如评论中提到的@quaabaam:
How to attach an event to a dynamically generated object
现在一切都结束了,您要做的是向新创建的对象添加一个事件处理程序 pic
。有几种方法可以做到这一点,但我将列出一个可以处理该事件的简单方法。
pic.MouseDown += (sender, e) => { //Stuff here }
这是一个lambda expression that results in a delegate function。 sender
是实际对象,e
是实际事件参数。处理程序需要这两个参数,即使您可能不使用它们也必须包括在内。
使用上述方法的副作用是,当您需要删除处理程序时,它可能会将原始处理程序留在那里并可能造成泄漏,因为它不保留对该委托的引用。