如何识别事件的发件人[重复]。

问题描述 投票:0回答:1

我有一个to-do软件应用,我在其中动态地创建每个to-do任务。我在每个任务上都有一个核对标记图像,当点击时,会调用一个 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 但这些只是告诉我,发件人是一个图像。

c# wpf xaml mouseevent sender
1个回答
0
投票

假设你使用的是事件处理程序 CheckmarkPressed 只被相同类型的对象调用,并且您设置了一个唯一的标识符来识别您的对象,如 @Ostas在他的评论中提到,您可以使用属性 Tag 为此 image.Tag = "checkbox" + tasksAdded 引自你的评论)。

private void CheckmarkPressed(object sender, MouseButtonEventArgs e) {
    var caller = (Image) sender;
    Console.WriteLine("Pressed by{0}",caller.Tag);
}
© www.soinside.com 2019 - 2024. All rights reserved.