gpt4 book ai didi

c# - Internet Explorer 工具栏 Tab 键

转载 作者:行者123 更新时间:2023-11-30 18:11:05 24 4
gpt4 key购买 nike

我用 C# 编写了一个 IE 工具栏,一切正常,除了当我从工具栏打开子 Windows 窗体时,Tab 键在子窗体上不起作用,无法让我从一个字段移动到另一个字段.

有趣的是,当我使用 form.showDialog() 而不是 form.show() 打开我的子表单时,选项卡工作正常。

我创建的工具栏是基于这个 article还有这个article

我已经实现了多篇文章中提到的 TranslateAcceleratorIO,但仍然没有成功。

这是我对 TranslateAcceleratorIO() 和 HasFocusIO() 的实现(在我的工具带类中实现)

        [DllImport("user32.dll")]
public static extern int TranslateMessage(ref MSG lpMsg);

[DllImport("user32", EntryPoint = "DispatchMessage")]
static extern bool DispatchMessage(ref MSG msg);

public int HasFocusIO()
{
return this.ContainsFocus ? 0 : 1; //S_OK : S_FALSE;
}

public int TranslateAcceleratorIO(ref MSG msg)
{
if (msg.message == 0x100)//WM_KEYDOWN
if (msg.wParam == (uint)Keys.Tab || msg.wParam ==(uint)Keys.F6)
{
if (SelectNextControl(
ActiveControl,
ModifierKeys == Keys.Shift ? false : true,
true,
true,
false)
)
{
return 0;//S_OK
}
}
else
{
TranslateMessage(ref msg);
DispatchMessage(ref msg);
return 0;//S_OK
}
return 1;//S_FALSE
}

我也试过像这样使用 TranslateAccelerator 但没有成功:

   public int TranslateAcceleratorIO(ref MSG msg)
{

TranslateMessage(ref msg);
DispatchMessage(ref msg);
return 0;//S_OK
}

还有其他人遇到过这个问题吗?

最佳答案

您是否也在实现 HasFocusIO?我相信您的主工具栏类也必须实现 HasFocusIO 并返回 true。

IE 工具栏的这些类型的问题曾一度困扰着我。我想我最终做的是创建单独的 UI 线程并在这些线程中使我的对话框成为模态,这消除了一堆奇怪的问题。但我认为实现 HasFocusIO 和 TranslateAcceleratorIO 应该适用于这个特定的对象。

关于c# - Internet Explorer 工具栏 Tab 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/219873/

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