【发布时间】:2014-11-27 16:54:37
【问题描述】:
我安装了带有触摸屏的 Windows 7。 我的标准 Windows 窗体应用程序有几个标准按钮。
我的问题:当我用手指点击表单上的按钮时,它们没有反应。 我的表单显示已单击按钮,但按钮本身没有反应。
如果我使用光标 - 一切正常。 如果我使用 Windows XP - 一切正常。
与 calc.exe 等任何标准应用程序相同
【问题讨论】:
标签: winforms windows-7 touchscreen
我安装了带有触摸屏的 Windows 7。 我的标准 Windows 窗体应用程序有几个标准按钮。
我的问题:当我用手指点击表单上的按钮时,它们没有反应。 我的表单显示已单击按钮,但按钮本身没有反应。
如果我使用光标 - 一切正常。 如果我使用 Windows XP - 一切正常。
与 calc.exe 等任何标准应用程序相同
【问题讨论】:
标签: winforms windows-7 touchscreen
我进行了几次实验,现在我相信按钮在触摸时的反应问题已经解决了。
1) 使用 WndProc 我注意到 WM_LBUTTONDOWN 和 WM_LBUTTONUP 消息同时进入我的窗口(在手指释放时)。
2) 我安装了最新的驱动程序,找到设置触摸模式并将其更改为鼠标仿真。这解决了我的单点触摸屏的问题。但是多点触摸屏的问题仍然存在。
3) 我创建了类:
class TouchButton : Button
{
protected override void OnHandleCreated(EventArgs e)
{
base.OnHandleCreated(e);
RegisterTouchWindow(Handle, 0);
}
protected override void OnHandleDestroyed(EventArgs e)
{
UnregisterTouchWindow(Handle);
base.OnHandleDestroyed(e);
}
}
4) 我用 TouchButtons 替换了所有通用按钮,问题就解决了!
【讨论】: