gpt4 book ai didi

c# - 如何防止在 WPF 中的可编辑控件中聚焦时使用 "Enter"键关闭窗口

转载 作者:行者123 更新时间:2023-11-30 21:16:24 27 4
gpt4 key购买 nike

如何防止焦点在可编辑控件中时用Enter键关闭窗口?

通常,我使用 IsCancel=True 取消并使用 IsDefault=True 确定。这是因为它将允许用户关闭对话框,使用 Enter 表示确定,使用 Esc 表示取消。

但是,问题是即使键盘焦点位于可编辑控件(如 TextBox)中,按 Enter 键也会关闭对话框。最好的行为是仅当键盘焦点不在可编辑控件中时按 Enter 键关闭对话框。但是,按两次 Enter 键应该关闭对话框。否则,用户需要将键盘焦点更改为另一个不可编辑的控件才能使用 Enter 键关闭。

因此,作为一种变通方法,我采用了这种方式:

  • 拦截KeyDown事件并检查如果是 Enter 键。
  • 如果是,检查键盘焦点是否在“确定”按钮上。
  • 如果是,用 Ok 关闭对话框按钮。否则,改变键盘焦点到确定按钮。因此,按两次 Enter 键将关闭对话框。

这有一个问题,因为第一个 Enter 会将焦点更改为 Ok 按钮,因此如果焦点不在 Ok 按钮上,用户需要按两次 Enter .这与理想行为没什么不同。此外,我需要为每个对话框实现此逻辑。

有人有解决这个问题的好主意吗?

最佳答案

如果寻找这个特定的行为,我只是简单地在 KeyDown 事件处理程序中将一些 bool 值设置为 true 第一次 Enter 被击中(而不是切换焦点).然后,在下一个 KeyDown 事件中,我将检查击键是否为 Enter 如果 Enter 有之前被打过为了在多个对话框中实现这一点,我将创建一个通用对话框,我将在其中重写 OnKeyDown 方法而不是订阅该事件,然后将该对话框子类化。

(话虽如此,作为用户我根本不喜欢这种行为。我建议在文本框中完全忽略 Enter 键 - 这是用户习惯的做法。)

关于c# - 如何防止在 WPF 中的可编辑控件中聚焦时使用 "Enter"键关闭窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5226103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com