如何在 UWP 或 C# 中查找指针事件类型,例如已输入指针或已存在指针?

How to find pointer event type like pointer entered or pointer existed in UWP or C#?

我们如何从RoutedEventArgs中找到哪种指针事件类型? 就像我有一个 HyperlinkButton 和一个普通的 Button。 我想在两个元素上使用鼠标 PointerEntered/PointerExited 时使用相同的方法。

HyperlinkButton hLinkBtn1 = new HyperlinkButton();
Button btn1 = new Button();
hLinkBtn1.PointerEntered += myEvent;
hLinkBtn1.PointerExited += myEvent;
btn1.PointerEntered += myEvent;
btn1.PointerExited += myEvent;

private void myEvent(object sender, PointerRoutedEventArgs e)
{
    // TODO
    // get pointer entered OR exited
}

使用 as 运算符转换 sender 参数:

private void myEvent(object sender, PointerRoutedEventArgs e)
{
    Button btn = sender as Button;
    if (btn != null)
    {
        //button was clicked...
    }
    else
    {
        HyperlinkButton hpl = sender as HyperlinkButton;
        if (hpl != null)
        {
            //hyperlink was clicked...
        }
    }
}

My question is not about Element, I want to know which Event triggered. When mouse over / out, get pointerEntered / pointerExited

您可以使用匿名事件处理程序来调用接受参数的方法,该参数可用于判断是否引发了 PointerEnteredPointerExited 事件:

btn1.PointerEntered  += (ss, ee) => myEventHandler(ee, "PointerEntered");
btn1.PointerExited  += (ss, ee) => myEventHandler(ee, "PointerExited");
...

private void myEventHandler(PointerRoutedEventArgs ee, string eventType)
{
    switch(eventType)
    {
        case "PointerEntered":
            //...
        break;
        case "PointerExited":
       //...
        break;
}