3

我目前正在使用 DotNetBrowser 库开发和 Wpf-Application。

所以目标是一个kiosk软件。

我必须使用 BrowserType.HEAVYWEIGHT 类型,因为我们加载了控件的 web 应用程序只能在这种类型下正常工作。在轻量级模式下,我捕获了触摸事件,但在浏览我们的 web 应用程序时也会触发事件。但回到问题:

<code>
    Browser browser = BrowserFactory.Create(BrowserContext.DefaultContext,     BrowserType.HEAVYWEIGHT);    
     m_BrowserView = new WPFBrowserView(browser);
</code>

我确实有两个触摸事件处理程序

<code>
    private void OnTouchUp(object sender, TouchEventArgs e)
    {
        Console.WriteLine("Touch up");
        base.OnTouchUp(e);
    }</code>

<code>
    private void OnTouchDown(object sender, TouchEventArgs e)
    {
        Console.WriteLine("Touch down");
        base.OnTouchDown(e);
    }
</code>

我在 MainWindow 的构造函数上注册了这两个方法

<code>
    TouchUp += OnTouchUp;  
    TouchDown += OnTouchDown;  
</code>  

也不

<code>    
    m_BrowserView.TouchUp += OnTouchUp;
    m_BrowserView.TouchDown += OnTouchDown;
</code>

强制应用程序输入我的触摸方法

DotNetBrowser:1.8.4 WPF:4.5.2 操作系统:Windows 10

4

3 回答 3

2

重量级渲染模式意味着将本机窗口嵌入到您的应用程序中。因此,所有用户输入都会首先被此窗口捕获,并且不会在 .NET 应用程序中自动触发事件。

为了为在重量级渲染模式下工作的控件实现这些事件,DotNetBrowser 为 Chromium 拦截这些事件并通知 .NET 端。DotNetBrowser 中的鼠标和按键事件已经这样做了,但触摸事件没有这样做。

如果这些事件的存在对您很重要 - 请通过电子邮件联系 DotNetBrowser 支持并请求此功能。实施它不会花费太多时间。

于 2017-01-17T15:26:26.130 回答
1

我通过这种方法解决了因为 longtap 的管道是 LONG_PRESS、TAP_CANCEL、LONG_TAP

browser.GestureEvent += (sender, args) =>
            {
                m_Gesture.Add(args.GestureType);
                if (args.GestureType == GestureType.LONG_PRESS)
                {
                    //// prepare the main action
                }

                if (args.GestureType == GestureType.LONG_TAP)
                {
                    ////do the main action;
                }
           }
于 2017-02-13T17:05:34.687 回答
-1

此功能已实现并存在于 DotNetBrowser 1.9 中:https ://dotnetbrowser.support.teamdev.com/support/solutions/articles/9000112125-listening-to-touch-gesture-events

于 2017-02-13T07:51:27.927 回答