gpt4 book ai didi

c# - 在 Control.GotFocus 中检测用户是向前导航还是向后导航?

转载 作者:太空宇宙 更新时间:2023-11-03 11:26:09 25 4
gpt4 key购买 nike

具有以下 WinForms 对话框形式,我正在处理 GotFocus MyControl 的事件:

enter image description here

MyControl 派生自 DevExpress XtraUserControl这又源自 Microsoft WinForms 标准 UserControl .

我想要实现的是,当用户使用 Tab 导航时 MyControl 获得焦点并且 MyControl 获得焦点时,焦点被转发到子控件。

我使用以下代码成功地做到了这一点:

protected override void OnGotFocus(EventArgs e)
{
base.OnGotFocus(e);

// Forward.
foreach (Control control in Controls)
{
if (control.TabStop)
{
control.Select();
break;
}
}
}

即如果 Button 1 获得焦点并且用户按下 Tab 键,则焦点设置到 Button 2

不能解决的是用户是否向后导航。 IE。如果 Button 4 获得焦点并且用户按下 Shift+Tab 键,则焦点应设置为 Button 3.

我的两个问题是:

  • 有没有办法检测 GotFocus 事件中用户的导航顺序?
  • 我的做法完全正确吗?也许有一个内置函数/标志我可以设置为 MyControl 以自动将焦点转发到它的子控件?

最佳答案

这么多的可能性:

  • 使用OnLostFocus事件存储当前控件并计算是否按下了TAB或SHIFT TAB

  • 覆盖 ProcessKeyPreview 以计算要在 OnGotFocus 中执行的操作 (SO answer)

  • 重写 ProcessCmdKey,如 this answer

关于c# - 在 Control.GotFocus 中检测用户是向前导航还是向后导航?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9274342/

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