如何识别事件的发送者

How to identify the sender of an event

我有一个待办软件应用程序,我可以在其中动态创建每个待办任务。我在每个任务上都有一个复选标记图像,单击它会调用 MouseLeftButtonDown 事件。它工作得很好,但我需要确定我点击了哪个任务。到目前为止,我是这样做的:

private void CreateTask() {
    Image checkmarkImage = new Image();
    checkmarkImage.MouseLeftButtonDown += checkmarkPressed;
}
private void CheckmarkPressed(object sender, MouseButtonEventArgs e) {
    Console.WriteLine("Pressed");
}

每当单击图像时,控制台都会写入 "Pressed"。我有什么办法可以识别调用函数的特定对象吗?如果我可以将参数像整数一样传递给 CheckmarkPressed 函数,那就太好了; tasksAdded 可以从任何数组中识别特定任务。有人知道我该怎么做吗?

我试过 sender.ToString()e.Source 之类的东西,但那些只是告诉我发件人是一张图片。

假设您正在使用事件处理程序 CheckmarkPressed 仅由相同类型的对象调用,并且您正在设置唯一标识符来识别您的对象,例如 ,您可以为此目的使用 属性 Tag image.Tag = "checkbox" + tasksAdded(引用自您的评论):

private void CheckmarkPressed(object sender, MouseButtonEventArgs e) {
    var caller = (Image) sender;
    Console.WriteLine("Pressed by{0}",caller.Tag);
}