问题:
运行环境如下:

操作系统:Windows 7 SP1 64位
安装内存: 4.00G
笔和触摸: 触控输入可用于 10 触摸点
Microsoft Edge: 版本 94.0.992.38 (官方内部版本) (32 位)
.NET Framework 4.8
在以上运行环境下,参考官网入门开发一个最简单的WebView2浏览器,在使用触摸点击网页按钮或者链接的时候,似乎Click事件未触发,请求帮助!

微软官网同样有人提问,并给处理解决方案:
https://social.msdn.microsoft.com/Forums/windowshardware/zh-CN/4903ca39-46e7-44d3-b4f4-d4a92b259bef/2002620160200402035129992wpf30340webview222312windows?forum=wpfzhchs

解决办法:https://learn.microsoft.com/en-us/previous-versions/dotnet/netframework-3.5/dd901337(v=vs.90)

大致意思:

Windows Presentation Foundation(WPF)内置了对处理Windows 7触摸输入的支持。通过平板电脑平台的实时手写笔输入(如OnStylusDown、OnStylus Up和OnStylusMove事件)提供支持。Windows 7还提供多点触摸输入作为Win32 WM_touch窗口消息。这两个API在同一HWND上互斥。通过平板电脑平台启用触摸输入(WPF应用程序的默认设置)将禁用WM_touch消息。因此,要使用WM_TOUCH从WPF窗口接收触摸消息,必须禁用WPF中的内置手写笔支持。这适用于托管使用WM_TOUCH的组件的WPF窗口等场景。

要禁用WPF侦听手写笔输入,请删除WPF窗口添加的任何平板电脑支持。

实现代码:

public static void DisableWPFTabletSupport()
{
    // Get a collection of the tablet devices for this window.  
    TabletDeviceCollection devices = System.Windows.Input.Tablet.TabletDevices;

    if (devices.Count > 0)
    {   
        // Get the Type of InputManager.
        Type inputManagerType = typeof(System.Windows.Input.InputManager);
        
        // Call the StylusLogic method on the InputManager.Current instance.
        object stylusLogic = inputManagerType.InvokeMember("StylusLogic",
                    BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic,
                    null, InputManager.Current, null);

        if (stylusLogic != null)
        {
            //  Get the type of the stylusLogic returned from the call to StylusLogic.
            Type stylusLogicType = stylusLogic.GetType();
            
            // Loop until there are no more devices to remove.
            while (devices.Count > 0)
            {
                // Remove the first tablet device in the devices collection.
                stylusLogicType.InvokeMember("OnTabletRemoved",
                        BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.NonPublic,
                        null, stylusLogic, new object[] { (uint)0 });
            }                
        }
               
    }
}

非常完美解决问题

分类: C# 标签: wpf

评论

全部评论 1

  1. roaul
    roaul
    Google Chrome Windows 10
    解决了我的问题

目录