如何识别事件的发送者
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);
}
我有一个待办软件应用程序,我可以在其中动态创建每个待办任务。我在每个任务上都有一个复选标记图像,单击它会调用 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);
}