使用户的第二次 Tab 按下就像 WebBrowser Control 中的 Ctrl + Tab

Make the user's second Tab press act like Ctrl + Tab in WebBrowser Control

我正在尝试制作一个应用程序,当用户连续两次按 Tab 时,第二个 Tab 应该起作用就像 Ctrl + Tab 一样。

我正在使用 toggle = !toggle 检测用户第二次按下 Tab。你知道我怎么能不使用 KeyDown 事件(webbrowser 控件没有这些类型的事件)而是使用 PreviewKeyDown 或类似的东西吗?

这是预期的行为:

在下面的示例中,我使用了 WebBrowser.Document.BodyKeyDown 事件。并检查了 Tab 键并缓存了用户第二次按下它并将其更改为 Ctrl+Tab:

int i = 0;
void Body_KeyDown(object sender, HtmlElementEventArgs e)
{
    if (e.KeyPressedCode == (int)Keys.Tab && !e.CtrlKeyPressed)
    {
        if (i == 1)
        {
            e.ReturnValue = false;
            SendKeys.Send("^({TAB})");
            this.Text += "[C+T]";       /*Just to be obvious in title-bar for test*/
        }
        else
        {
            this.Text += "[T]";         /*Just to be obvious in title-bar for test*/
        }
        i++;
    }
}

要测试解决方案,请确保已附加事件处理程序 correctly 并在文档加载完成后,按 Tab 两次以上并查看标题栏形式。

代码的预期结果是:

  • 先按Tab,正常运行。
  • 第二个 Tab 按下将更改为 Ctrl+Tab
  • 老三等动作正常
  • Ctrl+Tab 正常运行

注:

您将在标题栏中看到 [T][C+T][T][T][T]...。如果你想看到 [T][C+T][T][C+T][T][C+T]... 只需将 criretia 更改为 if (i % 2 == 1)