WPF对平板触摸操作的支持总结

前言

最近一段时间在做关于WPF开发的应用程序在平板上运行的相关开发,期间踩了无数坑总算满足了应用程序完美第一宗旨——客户满意!!!!接下来总结了一下相关技术要点:


提示:以下是本篇文章正文内容,下面案例可供参考

一、禁用 WPF 平板电脑支持

WPF内置了对处理 Windows 触摸输入的支持。该支持来自平板电脑平台的实时手写笔输入,如OnStylusDown、OnStylusUp和OnStylusMove事件。Windows 7 还提供多点触控输入作为 Win32 WM_TOUCH 窗口消息。这两个 API 在同一个 HWND 上是互斥的。通过平板电脑平台启用触摸输入(WPF 应用程序的默认设置)会禁用 WM_TOUCH 消息。因此,要使用 WM_TOUCH 从 WPF 窗口接收触摸消息,您必须禁用 WPF 中的内置手写笔支持。这适用于承载使用 WM_TOUCH 的组件的 WPF 窗口等场景。
要禁用 WPF 侦听手写笔输入,就得删除 WPF 窗口添加的任何数位板支持。

        public static void DisableWPFTabletSupport()
        {
            TabletDeviceCollection devices = System.Windows.Input.Tablet.TabletDevices;

            if (devices.Count > 0)
            {

                Type inputManagerType = typeof(System.Windows.Input.InputManager);

                object stylusLogic = inputManagerType.InvokeMember("StylusLogic",
                            BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic,
                            null, InputManager.Current, null);

                if (stylusLogic != null)
                {

                    Type devicesType = devices.GetType();

                    int count = devices.Count + 1;

                    while (devices.Count > 0)
                    {
                        devicesType.InvokeMember("HandleTabletRemoved", BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.NonPublic, null, devices, new object[] { (uint)0 });
                        count--;

                        if (devices.Count != count)
                        {
                            throw new Win32Exception("Unable to remove real-time stylus support.");
                        }
                    }
                }
            }
        }

二、防止滑动条造成的软件被惯性拖动

ManipulationBoundaryFeedback 事件使应用程序或组件能够在对象碰到边界时提供视觉反馈。例如,Window 类处理 ManipulationBoundaryFeedback 事件,使窗口在遇到其边缘时稍微移动。

        /// <summary>
        /// 防止惯性拖动
        /// </summary>
        /// <param name="e"></param>
        protected override void OnManipulationBoundaryFeedback(System.Windows.Input.ManipulationBoundaryFeedbackEventArgs e)
        {
            e.Handled = true;
            base.OnManipulationBoundaryFeedback(e);
        }

总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了部分WPF对平板触摸操作的支持总结,有些问题还是得自己在实际开发过程中去踩坑去解决。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF是一款用于创建富客户端应用程序的框架,而EPPlus是一个用于操作Excel文件的开源库。使用EPPlus可以轻松地通过WPF应用程序创建、读取和修改Excel文件。 首先,我们需要在WPF项目中引用EPPlus库。可以通过NuGet包管理器将EPPlus添加到项目中。安装完成后,就可以在代码中使用EPPlus的类和方法了。 假设我们想要在WPF应用程序中创建一个新的Excel文件。首先,我们需要实例化一个ExcelPackage对象,表示一个空白的Excel文件。然后,我们可以通过使用ExcelPackage对象的属性和方法来创建和填充Excel文件。 例如,我们可以使用ExcelPackage对象的Worksheets属性来获取工作表集合,然后使用Add方法创建一个新的工作表。接下来,我们可以使用Cells属性获取单元格,并使用Value属性设置单元格的值。最后,我们可以使用SaveAs方法将Excel文件保存到指定的位置。 除了创建新的Excel文件,EPPlus还提供了一系列的方法来读取和修改现有的Excel文件。我们可以使用Load方法加载一个已有的Excel文件,然后使用Worksheets属性获取工作表集合。通过操作工作表和单元格,我们可以读取现有的数据,并使用EPPlus提供的方法来修改和更新Excel文件。 在使用EPPlus操作Excel文件时,需要注意的是要及时释放资源。EPPlus使用了大量的COM对象,所以在代码完成后,需要手动调用Dispose方法来释放资源。 总的来说,使用WPF和EPPlus可以方便地操作Excel文件。无论是创建、读取还是修改Excel文件,EPPlus提供了丰富的功能和易于使用的API,使得在WPF应用程序中操作Excel变得简单而高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值