通过鼠标事件,从鼠标点击的坐标寻找指定的控件

 1 /// <summary>
 2         /// 图片鼠标右键
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void Image_slt_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
 7         {
 8             Point point = e.GetPosition(tree);
 9             HitTestResult result = VisualTreeHelper.HitTest(tree, point);
10             if (result == null)
11                 return;
12             ListBoxItem item = Utils.FindVisualParent<ListBoxItem>(result.VisualHit);
13             if (item == null)
14                 return;
15             var vm_item = item.DataContext as ImageTreeControlImageModel;
16             if (vm_item == null)
17                 return;
18             ContextMenu menu = new ContextMenu();
19             MenuItem mitem = new MenuItem();
20             mitem.Tag = vm_item;
21             mitem.Click += mItem_Click;
22             mitem.Header = "删除";
23             menu.Items.Add(mitem);
24             menu.IsOpen = true;
25         }

 1 internal static class Utils
 2     {
 3         public static T FindVisualParent<T>(DependencyObject obj) where T : class
 4         {
 5             while (obj != null)
 6             {
 7                 if (obj is T)
 8                     return obj as T;
 9
10                 obj = VisualTreeHelper.GetParent(obj);
11             }
12
13             return null;
14         }
15     }

原文地址:https://www.cnblogs.com/xuling-297769461/p/9334903.html

时间: 2024-10-16 00:24:07

通过鼠标事件,从鼠标点击的坐标寻找指定的控件的相关文章

CSS+元素,鼠标事件触发鼠标模形变成手状的形状

|| 版权声明:本文为博主原创笔记,未经博主允许不得转载. CSS+元素,鼠标事件触发鼠标模形变成手状的形状,以及其他样式. 方案一:使用CSS样式改变,鼠标移动到元素上显示手状. 1 cursor:pointer; 方案二:使用JS触发事件改变原样式:鼠标事件onmouseover(鼠标移动到元素上触发事件)触发时设置样式 1 // 使用在元素的标签上的事件 2 // 第一种方式 3 onmouseover="this.style.cursor='mouseHand'" 4 5 //

iOS开发——实战技术OC篇&amp;点击状态栏ScrollView(包括子控件)自动滚到顶部

点击状态栏ScrollView(包括子控件)自动滚到顶部 其实这种方式我们平时见的还是比较多的,而且适合用户的需求,所以就搬来琢磨了一下,感觉效果还不错 这里就直接将解决思路一一写出来不将代码分段展示了,在代码中我加了详细的注释objective-c的套路和swift基本一样,在最后会将Swift和objective-c的代码一起放上,如果需要直接解决问题的童鞋可以直接将代码拷贝到工程里即可 首先创建一个topWindow继承至NSObject,这里我们考虑将这个功能完全封装起来,所以所有的方法

WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件

在WPF中,只有鼠标位置在某个控件上的时候才会触发该控件的鼠标事件.例如,有两个控件都注册了MouseDown和MouseUp事件,在控件1上按下鼠标,不要放开,移动到控件2上再放开.在这个过程中,控件1只会触发MouseDown事件,而控件2则只会触发MouseUp事件,鼠标不在控件上他们就收不到对应的鼠标事件.同样的如果某个控件注册了MouseMove事件,当鼠标移动到控件外之后,控件将不会接收到MouseMove事件.但是在很多情况下我们需要在鼠标移动到控件外之后还能接收鼠标事件.例如按住

c#全局鼠标事件以及鼠标事件模拟

最近在编写Max插件时,其主容器FlowLayoutPanel由于隐藏了滚动条,要实现按住鼠标中键上下拖动的功能,因此尝试了全局鼠标事件.以及鼠标勾子,可惜由于Max不争气?都未能实现,于是代码报废,故将其分享于此. 一.全局鼠标事件,首先构建鼠标事件处理器 public delegate void MouseMovedEvent(); public delegate void MouseMDownEvent(); public delegate void MouseMUpEvent(); pu

鼠标事件之鼠标滑过事件MOUSEOVER

来源地址:http://www.g2room.com/jquery/index.php?p=example%2Fevent%2Fmouseover.html&n=%E9%BC%A0%E6%A0%87%E4%BA%8B%E4%BB%B6%E4%B9%8B%E9%BC%A0%E6%A0%87%E6%BB%91%E8%BF%87%E4%BA%8B%E4%BB%B6MOUSEOVER var i = 0; // 定义当事件触发后执行的方法 function showContent (event){ $(

Recyclerview点击事件,更新item的UI+更新Recyclerview外的控件

项目中用到了Recyclerview,在第一行代码中学到了一种相对来说简单的点击事件方法,可是这种点击事件是在adapter中写的,没有教怎么更新item的ui和更新Recyclerview之外的控件,研究了一下,写下我的方案. 需求如下图: 首先设置点击事件,在ViewHolder中添加View view变量来保存item最外层布局的实例. 然后在onCreateViewHolder()中注册点击事件,可以为item设置点击事件,也可以为item中的控件eg:TextView设置点击事件.这正

20150722---点击按钮使指定的控件可见部分平移(JS)

前段代码: <div id="out" style=" width:400px;overflow:hidden;"> <div id="int" style="white-space:nowrap;width:800px;"> <asp:Label ID="lblTable" runat="server" Text="Label">

用产生随机数的方法加上鼠标事件实现点击生成彩色积木

这个小例子我是用纯Js实现的,这个例子主要用到了random()产生随机数的方法和onmouse等鼠标事件以及获取元素和视口坐标来实现了可以在网页上拖拽的积木效果,可以帮学习javascript的同学一些小小的启发,话不多说,先给大家看效果图: 这个html代码就很简单了,我们写一个按钮来实现点击事件即可: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo

Java知多少(93)鼠标事件

鼠标事件的事件源往往与容器相关,当鼠标进入容器.离开容器,或者在容器中单击鼠标.拖动鼠标时都会发生鼠标事件.java语言为处理鼠标事件提供两个接口:MouseListener,MouseMotionListener接口. MouseListener接口 MouseListener接口能处理5种鼠标事件:按下鼠标,释放鼠标,点击鼠标.鼠标进入.鼠标退出.相应的方法有:(1) getX():鼠标的X坐标(2) getY():鼠标的Y坐标(3) getModifiers():获取鼠标的左键或右键.(4