J'ai écrit une barre d'outils IE en C# et tout fonctionne bien sauf que lorsque j'ouvre un formulaire Windows enfant à partir de ma barre d'outils, la touche de tabulation ne fonctionne pas sur le formulaire enfant pour me permettre de passer d'un champ à l'autre. La partie intéressante est que lorsque j'ouvre mon formulaire enfant en utilisant form.showDialog() au lieu de form.show(), les onglets fonctionnent normalement.Internet Explorer Toolbar Tab touche
La barre d'outils que j'ai créé est basé sur ce article et ce article
J'ai mis en TranslateAcceleratorIO comme mentionné dans plusieurs articles, mais toujours pas de chance.
Voici mes implmentations de TranslateAcceleratorIO() et HasFocusIO() (Implémenté dans ma classe toolband)
[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
}
J'ai aussi essayé d'avoir TranslateAccelerator comme ça avec pas de chance:
public int TranslateAcceleratorIO(ref MSG msg)
{
TranslateMessage(ref msg);
DispatchMessage(ref msg);
return 0;//S_OK
}
Est-ce que quelqu'un d'autre a rencontré ce problème?
Avez-vous déjà trouvé ce correctif? – wpfwannabe
@wpfwannabe Malheureusement, je ne me souviens pas si nous avons résolu ce problème particulier, et c'était chez mon employeur précédent, donc je ne peux pas regarder le code pour le savoir. – Millhouse