Я написал панель инструментов IE на C#, и все работает отлично, за исключением того, что когда я открываю дочернюю форму Windows из моей панели инструментов, ключ вкладки не работает над дочерней формой, чтобы я мог перейдите из поля в поле.Клавиша вкладки панели инструментов Internet Explorer
Интересная часть заключается в том, что когда я открываю свою дочернюю форму, используя form.showDialog() вместо form.show(), вкладки работают как обычно.
Панель инструментов я создал на основе этого article и это article
Я реализовал TranslateAcceleratorIO, как не упоминается в нескольких статьях, но до сих пор не повезло.
Вот мои implmentations из TranslateAcceleratorIO() и HasFocusIO() (реализованные в классе 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
}
Я также попытался имея 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