如何知道鼠标在画布上单击了哪个控件?
我正在创建一个 C# WPF 应用程序,并寻找一种方法来执行以下操作:
我有一个画布,其中包含不同的用户控件和一个按钮。
当我单击按钮时,光标变为一只手(Canvas.Cursor = Cursors.Hand)
然后,如果我单击其中一个控件,我会收到一个消息框,显示单击的控件的名称(该名称是控制)。
如果我单击其他地方,光标将重置,我应该再次单击该按钮,然后才能再次获取名称。
我尝试使用事件和处理程序,但无法实现我想要的。
非常感谢你的帮助
I am creating a C# WPF application and looking for a way to do the following:
I have a canvas with different user controls in it and a button.
When I click on the button the cursor change to a hand (Canvas.Cursor = Cursors.Hand)
Then if I click on one of the controls I get a message box showing the name of the control clicked (the name is a public property of the control).
If I click somewhere else i the cursor resets and I should click on the button again before I can get the name again.
I tried playing with events and handlers but couldn't achieve what I wanted.
Thank you very much for you help
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
Canvas.MouseDown
并使用VisualTreeHelper.HitTest()
和鼠标按下事件参数的GetPosition()
来获取之前的元素点击。然后,您可以使用
VisualTreeHelper.GetParent()
(在while
循环中)来获取被单击的控件。You can use
Canvas.MouseDown
and useVisualTreeHelper.HitTest()
withGetPosition()
of the mouse down event args to get the element that was clicked.Then you can use
VisualTreeHelper.GetParent()
(in awhile
loop) to get the control that was clicked.