需要在触摸屏上轻敲两次才能在WPF中点击按钮

3
我有一个WPF应用程序,其中在某个时刻会弹出另一个窗口,用户可以在打开时选择一个字段输入文本,然后单击“确定”保存文本。在我的桌面上使用鼠标时,这个功能正常工作,但是当我在平板电脑(Surface Pro)上运行应用程序时,需要点击两次“确定”按钮才能保存文本。第一次点击会将按钮高亮显示,第二次点击才会单击它。是否有办法让用户只需在屏幕上轻触一次即可单击该按钮?
这仅发生在应用程序切换到新窗口时。主窗口只需要一个轻触即可单击按钮(尽管我注意到在切换回主窗口时需要两个轻触)。似乎这个问题与焦点或其他东西有关,因为如果我在单击“确定”之前在新窗口的某个地方轻触一下,我可以轻触一次“确定”按钮就会触发单击事件。

可能是 https://stackoverflow.com/q/16413882/345659 的重复问题。 - JumpingJezza
2个回答

0

这是WPF与触摸显示器组合时的一个错误。

因为文本框被聚焦,而您按下按钮,文本框将失去焦点,该按钮获得焦点。当按钮具有焦点时,您只需按下它即可保存文本。

实际上,您无法解决这个问题,因为触摸屏在您触发事件之前首先会将焦点集中在按钮上(我认为这可能是一种安全功能)。


这正是我所担心的。这非常令人失望,如果用户必须始终点击两次“确定”按钮才能单击它,那么我的应用程序就会变得不太用户友好。嗯,算了。 - Jacob CM
@JacobCM 嗯,有一个变通方法,但我不知道它是否适用于你的应用程序。触摸屏可以调整驱动程序,使单击变成双击(我在为你寻找答案时读到了这个)。我不知道如何实现这一点,或者实施它是否有意义。 - Giellez
我从未想过那个,那是一个有趣的解决方案。我不确定这是否适用于我的应用程序,但我会研究一下,谢谢。 - Jacob CM

0

你的代码可能需要类似这样的东西:

textBox1.Focus();

另一个需要考虑的地方是表单上项目的 Tab 顺序。一旦焦点离开文本框,它就会移动到下一个最高 Tab 顺序对象。应该是“确定”按钮。
您可以通过查看表单上对象的属性来调整 Tab 顺序。

我已经有了textBox.Focus(),当窗口弹出时,文本框被选中,您可以在不点击任何内容的情况下输入文本以添加到其中,但仍需要两次点击才能单击“确定”。我将查看选项卡顺序,看看是否有所帮助。 - Jacob CM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接