我试图创建一个应用程序,当用户连续两次按 Tab 时,第二个 Tab 应该像 Ctrl一样 + Tab 代替。
我使用toggle = !toggle
检测第二次用户按 Tab 。您是否知道如何在不使用KeyDown
事件(webbrowser控件不具备此类事件)但使用PreviewKeyDown
或类似内容的情况下执行此操作?
预期的行为:
第一次用户按 Tab 时,应检测到输入并通过WebBrowser
控件(正常行为)
第二次用户按 Tab 应该被处理并转换为 Ctrl + Tab 。
答案 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 两次以上并查看表单的标题栏。
代码的预期结果是:
注意:
您会在标题栏中看到[T][C+T][T][T][T]...
。如果您想查看[T][C+T][T][C+T][T][C+T]...
,只需将criretia更改为if (i % 2 == 1)
。