title author date CreateTime categories
win10 17025 触摸bug
lindexi
2018-09-01 09:50:18 +0800
2018-2-13 17:23:3 +0800
WPF UWP 触摸

This article is written in both English and Chinese.
本文使用中文和英文两个版本。
在 win10 的 17025(直到 17134 也就是正式版 1803 也没有修复) 可以容易让 UWP 触摸失效。做法是创建一个窗口背景是透明的 wpf 程序,把他置顶,这时所有 uwp 程序就无法触摸。在正式版 17134 是所有的触摸程序都触摸失效,除了可以把触摸转鼠标的程序如 VisualStudio 和 QQ 还能使用,如 Edge 和 Chrome 都无法使用。
I found the easy way to make the UWP app touch not work in win10 17025(until 17134). To create a wpf app with transparent background and make it Topmost, you can see all of the UWP app's touch not work.

中文

写英文的原因是给微软报这个问题,现在发在 微软反馈 希望大家投票。

步骤:

  1. 创建一个 wpf 程序

  2. 设置 wpf 的窗口最大化

  3. 设置 wpf 程序的背景为透明

  4. 启动 wpf 程序

这时就可以看到 Edge 等软件都无法触摸

在检查的时候可以使用ManipulationDemo,可以看到在触摸的时候没有 Pointer 消息。

下面是关闭 wpf 程序之后,可以看到最下面有 Pointer 消息

下面是这个wpf软件代码:

        public MainWindow()
{
InitializeComponent(); AllowsTransparency = true;
WindowStyle = WindowStyle.None;
WindowState = WindowState.Maximized;
Background = Brushes.Transparent;
Topmost = true;
}

解决方案

最新的微软补丁August 30, 2018—KB4346783 修复了这个问题,只需要在用户的设备安装这个补丁就可以解决

下面是不使用补丁的方法

如果设置了一个窗口满足下面的属性

            WindowStyle = WindowStyle.None;
WindowState = WindowState.Maximized;

或

            WindowStyle="None"
AllowsTransparency="True"

那么就必须要设置 ResizeMode="NoResize" 不然就会出现下面的问题

  • 在 win10 17025-17134 版本,如果同时设置AllowsTransparency = true;窗口下面所有程序触摸失效

  • 还原窗口再最大化,窗口出现偏移

  • 切换屏幕,窗口出现偏移

English

Step:

  1. Create a wpf app

  2. Set the wpf app's windows state is Maximized

  3. Set the wpf app's windows background is transparent

  4. Run the wpf app

Then you can see all of the uwp app's such as edge and setting touch not work.

You can use ManipulationDemo to help you see the Pointer message that cant get when touch. I use ManipulationDemo to find the pointer message have not be received. The app can only receive the mouse message.

I took an image that shows the pointer message when I closed the wpf app.

This is the wpf app's code:

        public MainWindow()
{
InitializeComponent(); AllowsTransparency = true;
WindowStyle = WindowStyle.None;
WindowState = WindowState.Maximized;
Background = Brushes.Transparent;
Topmost = true;
}

This is my system and I think in win10 17025 the windows cant make the app uses pointer message to work that exists another transparent background app in above.

Solution

Microsoft has fixed this issue in .NET Framework August 2018 Preview of Quality Rollup.

Addresses an issue where touch and mouse events were handled differently in Windows Presentation Foundation (WPF) applications that have a transparent overlay window.


If you have a Window that set the following properties.

            WindowStyle = WindowStyle.None;
WindowState = WindowState.Maximized;

Or

            WindowStyle="None"
AllowsTransparency="True"

You must set ResizeMode="NoResize" to avoid some problems as

  • All applications lost touch or stylus if a WPF transparent window covers on them.

  • Windows appears offset when set it to Maximized from Normal.

  • Windows appears offset when switch screen.

See c# - On Windows 10 (1803), all applications lost touch or stylus if a WPF transparent window covers on them

On Windows 10 (1803), all applications lost touch or stylus if a WPF transparent window covers on them - Developer Community

dotnet-campus/TouchIssueOnWindows10.0.17134: On Windows 10 (1803), all applications lost touch or stylus if a WPF transparent window covers on them

2018-9-1-win10-17025-触摸bug的更多相关文章

  1. win10 17025 触摸bug

    This article is written in both English and Chinese. 本文使用中文和英文两个版本. 在 win10 的 17025 可以容易让 UWP 触摸失效.做 ...

  2. Win10系统菜单打不开问题的解决,难道是Win10的一个Bug ?

    Win10左下角菜单打不开,好痛苦,点击右下角的时间也没反应,各种不爽,折磨了我好几天,重装又不忍心,实在费劲,一堆开发环境要安装,上网找了很多方法都不适用.今天偶然解决了,仔细想了下,难道是Win1 ...

  3. T470 Win10下触摸板手势

    T470 Win10下触摸板手势 学习了:https://forum.51nb.com/thread-1742490-1-1.html 三指横向竟然是alt+tab 学习了:http://www.xi ...

  4. mac安装win10后触摸板没有右键功能键的添加技巧

    一些mac用户也会在自己的笔记本电脑上安装windows10系统. 但最近有部分用户发现,安装上win10正式版后,发现无论点击触摸板哪个位置,都只有左键,根本无法右键的问题, 针对此问题,现笔者分享 ...

  5. WPF开发经验-实现Win10虚拟触摸键盘

    一 引入 项目有个需求,需要实现纯触控操作进行键盘输入.项目部署在Win10系统上,考虑有两种方案来实现. 通过调用Win10自带的触摸键盘来实现: 通过WPF实现一个触摸键盘来实现: 二 调用Win ...

  6. WIN10系统触摸板快捷键

    快捷的手势操作,有时候会让人脱离鼠标,只要不是非用不可的情况,基本上这些常用手势就能让我们摆脱鼠标携带不便或者桌子地方小的烦恼.iOS上的快捷手势很是受欢迎,win10上却鲜有人知晓,尤其是非开发人员 ...

  7. 移动端一个奇怪的触摸bug

    这两天遇到一个很奇怪的bug,在移动端,一个页面里所有的input框都不能点击,我查了一下,里面的没有设置readonly属性,只要页面滚动一下就可以用了,而且,只要我在真机测试的时候,f12开发者模 ...

  8. win10笔记本触摸板手势大全

  9. dotnet 从入门到放弃的 500 篇文章合集

    本文是记录我从入门到放弃写的博客 博客包括 C#.WPF.UWP.dotnet core .git 和 VisualStudio 和一些算法,所有博客使用 docx 保存 下载:dotnet 从入门到 ...

随机推荐

  1. 【bzoj3277&&3474】串

    *题目描述: 字符串是oi界常考的问题.现在给定你n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串(注意包括本身). *输入: 第一行两个整数n,k.接下来n行 ...

  2. 双系统使用Linux引导

    今天在装linux的window双系统时,出现在无法使用linux引导的问题,开机总是自动进windows,照理来说我先装的window,后装的linux,应该是开机进grub引导才对.在主板的boo ...

  3. plt.imshow()为什么不能显示同时显两张照片

    在编程的过程中发现plt.imshow()不能同时显示两张照片,如果有两条plt.imshow()语句处于一前一后的位置,那么程序运行后只会显示后面的图片.如果想让每一张图片都显示出来,需要在每一个p ...

  4. ES的副本数量、插入大批量数据前,副本数应该设置为0

    多副本可以提升检索的能力,但是如果副本数量太多,插入数据的时候容易出现卡顿现象: 因为主分片要把数据同步给所有的副本,所以建议副本数量最好是1-2个: ---- Es在索引数据的时候,如果存在副本,那 ...

  5. 手把手教你学Vue-3(路由)

    1.路由的作用 1.当我们有多个页面的时候 ,我们需要使用路由,将组件(components)映射到路由(routes),然后告诉 vue-router 在哪里渲染它们. 简单的路由 const ro ...

  6. JavaScript method overload

     https://stackoverflow.com/questions/2187666/help-with-js-and-functions-parameters JavaScript doesn' ...

  7. Understanding RequireJS for Effective JavaScript Module Loading

    Modular programming is used to break large applications into smaller blocks of manageable code. Modu ...

  8. apache cgi 程序: End of script output before headers

    测试linux Apache cgi程序: #include <stdio.h> int main(){ printf("abc"); ; } 目录:/var/www/ ...

  9. 012-elasticsearch5.4.3【五】-搜索API【一】搜索匹配所有matchAllQuery、全文查询[matchQuery、multiMatchQuery、commonTermsQuery、queryStringQuery、simpleQueryStringQuery]

    一.概述 查询所使用的 QueryBuilders来源于以下 import static org.elasticsearch.index.query.QueryBuilders.*; 请注意,您可以使 ...

  10. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第8节 Math类_19_Math练习:小学数学真题

    题目 画数轴 解题思路 强转成int类型就会舍弃小数位数 输出最终的数量 如果用Math.ceil的方式的话