博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[WPF]获取鼠标指针下的元素
阅读量:5884 次
发布时间:2019-06-19

本文共 766 字,大约阅读时间需要 2 分钟。

原文:

                                             [WPF]获取鼠标指针下的元素

                                                        周银辉

以前写过一些GetElementUnderMouse之类的函数,要用到坐标换算而显得有些麻烦(特别是当元素有XXXTransform的时候)

今天看到Mouse类居然有一个属性,可以获得鼠标下的元素, 很奇怪,我的MSDN文档以及VS2008智能提示中都没有显示该属性,但反编译一下可以看到。

但必须注意到的一点是,WPF控件是由各个元素复合而成的,但Mouse类可不知道这概念,所以不要期望它为了返回一个Button,其很可能会返回Button的visualTree中的TextBlock等,所以,如果我们加上如下的方法就完美了:

        
public
 
static
 T FindVisualParent
<
T
>
(UIElement element) 
where
 T : UIElement
        {
            UIElement parent 
=
 element;
            
while
 (parent 
!=
 
null
)
            {
                var correctlyTyped 
=
 parent 
as
 T;
                
if
 (correctlyTyped 
!=
 
null
)
                {
                    
return
 correctlyTyped;
                }
                parent 
=
 VisualTreeHelper.GetParent(parent) 
as
 UIElement;
            }
            
return
 
null
;
        }

 

两者结合一下,我们的GetElementUnderMouse方法便可以如下书写:

        
public
 
static
 T GetElementUnderMouse
<
T
>
() 
where
 T: UIElement
        {
            
return
 FindVisualParent
<
T
>
(Mouse.DirectlyOver 
as
 UIElement);
        }

 

 

转载地址:http://ablix.baihongyu.com/

你可能感兴趣的文章
ASP.NET MVC 防止CSRF攻击
查看>>
EF:无法检查模型兼容性,因为数据库不包含模型元数据。
查看>>
0和5
查看>>
C# WinFrom一些技术小结
查看>>
hdu5001 Walk 概率DP
查看>>
模拟select控件&&显示单击的坐标&&用户按下键盘,显示keyCode
查看>>
Mac-OSX下Ruby更新
查看>>
jsp九个内置对象
查看>>
[Python笔记][第一章Python基础]
查看>>
Bloomberg SEP 12.x 迁移小记
查看>>
生日小助手V1.1发布了——拥有更整齐的信息列表
查看>>
代理模式
查看>>
Qt 学习(1)
查看>>
MFC CEdit改变字体大小的方法
查看>>
java 中文数字排序方法
查看>>
centos 关于防火墙的命令
查看>>
openstack 源码分析
查看>>
idea 使用maven plugin tomcat 运行正常,无法进入debug模式
查看>>
Classification Truth Table
查看>>
JVM学习:对象的创建和内存分配
查看>>