C# で IE ツールバーを作成しましたが、ツールバーから子 Windows フォームを開くと、子フォームでタブ キーが機能せず、フィールドからフィールドに移動できないことを除いて、すべて正常に動作しています。
興味深いのは、form.show() の代わりに form.showDialog() を使用して子フォームを開くと、タブが通常どおりに機能することです。
私が作成したツールバーは、この記事とこの記事に基づいています
いくつかの記事で述べたように、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
}
他の誰かがこの問題に遭遇しましたか?