我想在鼠标悬停时获得控件的类型。请帮忙
答案 0 :(得分:1)
您可以使用MouseMove
事件获取鼠标当前移动的UIElement类型。由于这是一个冒泡事件,您可以将处理程序附加到容器,例如Canvas。
可以从MouseEventArgs
OriginalSource
属性中获取鼠标当前移动的UIElement。
因此,要确定鼠标移动的类型,您可以使用以下代码: -
void Canvas_MouseMove(object sender, MouseEventArgs e)
{
Type currentType = e.OriginalSource.GetType();
// Make decisions based on value of currentType here
}
然而,您需要小心,当用户移动鼠标时,MouseMove会频繁触发,因此您可能希望延迟任何繁重的工作,直到最后一次鼠标移动后有一段时间。
遗憾的是,事件中没有冒泡鼠标。
另一种方法是将相同的MouseEnter处理程序附加到您添加到Canvas的每个子UIElement。在这种情况下,您可以使用sender
代替e.OriginalSource
。如果从Canvas中删除元素,则必须小心删除处理程序,否则可以创建看起来像内存泄漏的内容。
答案 1 :(得分:0)
将mouse_enter
事件添加到控件中。
您可以使用以下代码获取类型
var x = sender.GetType();
然后您可以使用以下内容进行比较:
if (x.Equals(typeof(TreeView)))