我已经在C#中编写了一个IE工具栏,并且所有的工作都很好,除了当我从我的工具栏打开一个子窗口窗体时,Tab键在子窗体上不起作用,从一个领域到另一个领域。Internet Explorer Toolbar Tab键
有趣的部分是,当我使用form.showDialog()而不是form.show()打开我的子窗体时,这些标签像普通一样工作。
在几篇文章中提到,但仍没有运气,我实现TranslateAcceleratorIO。
这里是我的TranslateAcceleratorIO()和HasFocusIO()的implmentations(在我的工具条类实现)
[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
}
有其他人遇到这个问题吗?
你有没有得到这个修复? – wpfwannabe 2011-10-03 08:42:39
@wpfwannabe不幸的是,我不记得我们是否解决了这个特殊问题,而且这是我以前的雇主,所以我不能看代码。 – Millhouse 2011-10-17 17:57:25