-2

I have a to-do software application in which I dynamically create each to-do task. I have a checkmark image on each task that when clicked, calls a MouseLeftButtonDown event. It works perfectly fine, but I need to identify which task I clicked on. Here's how I'm doing it so far:

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

Whenever the image is clicked on, the console writes "Pressed". Is there any way for me to identify which specific object called the function? It would be great if I could pass arguments to the CheckmarkPressed function like an integer; tasksAdded that could identify the specific task from any array. Anyone know how I can do this?

I tried things like sender.ToString() or e.Source but those just tell me that the sender was an image.

Ben
  • 1
  • 2
  • I can add a dynamic name to it (like `image.Name = "checkbox" + tasksAdded`) but I don't see any way to request the name from the given parameters. – Ben May 28 '20 at 17:55

1 Answers1

0

Assuming your are using the event handler CheckmarkPressed to be called only by the same type of objects, and that you are setting a unique identifier to recognize your objects, like @Ostas mentioned in his comment, you may use the property Tag for this purpose image.Tag = "checkbox" + tasksAdded (Quoted from your comment):

private void CheckmarkPressed(object sender, MouseButtonEventArgs e) {
    var caller = (Image) sender;
    Console.WriteLine("Pressed by{0}",caller.Tag);
}
Cfun
  • 8,442
  • 4
  • 30
  • 62