c# - 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
};
}
但是,这不起作用,我不确定还能做什么。有人帮忙吗?
解决方案
首先,您的问题不清楚,并且正如评论中指出的那样没有多大意义。该术语在您实际所做的事情中是错误的,但并不是什么大问题,它需要与您实际在做的事情保持一致。
例如评论中提到的@quaabaam:
如何将事件附加到动态生成的对象
现在已经不碍事了,您要做的是向该新创建的 object 添加一个事件处理程序pic
。有几种方法可以做到这一点,但我将列出一个简单的方法来处理该事件。
pic.MouseDown += (sender, e) => { //Stuff here }
这是一个导致委托函数的 lambda 表达式。sender
是实际的对象,e
是实际的事件参数。处理程序需要这两个参数,即使您可能不使用它们,也必须包含它们。
使用上述方法的副作用是,当您需要删除处理程序时,它可能会将原始处理程序留在那里,并且可能会造成泄漏,因为它不保留对该委托的引用。
推荐阅读
- react-native - 使用 npm 安装 expo-cli --global 进行反应设置,出现错误
- javascript - Sendemail 函数:要处理的行数
- python - ModuleNotFoundError:没有名为“SpecAugment”的模块
- node.js - save() 被调用一次,但在猫鼬中第一次被执行两次
- laravel - 不同数据库连接中的 has 或 has 不起作用,查询相关模型的替代方法是什么(在跨数据库连接中)?
- rxdb - pullQueryBuilder 中的 Doc 始终为空
- ios - UIView.animate 不在一个功能上制作动画
- kotlin - 流程先等待,然后在后台处理其余的
- mysql - Wrong Create Value in SQL
- amazon-web-services - AWS No space left on device