使用户的第二次 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
或类似的东西吗?
这是预期的行为:
用户第一次按下 Tab,应该检测输入并通过 WebBrowser
控件(正常行为)
第二次用户按下 Tab 应该被处理并转换为 Ctrl + Tab.
在下面的示例中,我使用了 WebBrowser.Document.Body
的 KeyDown
事件。并检查了 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)
。
我正在尝试制作一个应用程序,当用户连续两次按 Tab 时,第二个 Tab 应该起作用就像 Ctrl + Tab 一样。
我正在使用 toggle = !toggle
检测用户第二次按下 Tab。你知道我怎么能不使用 KeyDown
事件(webbrowser 控件没有这些类型的事件)而是使用 PreviewKeyDown
或类似的东西吗?
这是预期的行为:
用户第一次按下 Tab,应该检测输入并通过
WebBrowser
控件(正常行为)第二次用户按下 Tab 应该被处理并转换为 Ctrl + Tab.
在下面的示例中,我使用了 WebBrowser.Document.Body
的 KeyDown
事件。并检查了 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)
。