使用户的第二个Tab按下WebBrowser Control中的Ctrl + Tab

时间:2016-09-01 10:51:23

标签: c# winforms webbrowser-control

我试图创建一个应用程序,当用户连续两次按 Tab 时,第二个 Tab 应该像 Ctrl一样 + Tab 代替。

我使用toggle = !toggle检测第二次用户按 Tab 。您是否知道如何在不使用KeyDown事件(webbrowser控件不具备此类事件)但使用PreviewKeyDown或类似内容的情况下执行此操作?

预期的行为:

  • 第一次用户按 Tab 时,应检测到输入并通过WebBrowser控件(正常行为)

  • 第二次用户按 Tab 应该被处理并转换为 Ctrl + Tab

1 个答案:

答案 0 :(得分:1)

在下面的示例中,我使用了KeyDown WebBrowser.Document.Body事件。并检查 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 按,正常行动。
  • 第二个选项卡按下将更改为 Ctrl + Tab
  • 第三等通常是
  • Ctrl + Tab 正常行事

注意:

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