tabstop
будет работать.
Теперь мое альтернативное решение - просто предположение: у первого элемента в вашем фрейме есть tabindex, равный 5, у последнего элемента в фрейме есть tabindex, равный 9. Возьмите элемент, который имеет максимальный tabindex в пределах рамки (то есть согласно tabindex 9). на PreviewKeyDown
событие напишите следующий код:
private void frames_max_tabindex_element_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyValue == 9 )
element_that_has_tabindex_equal_to_frames_min_tab_index_minus_1.Focus();
}
краткое объяснение. (используя предположения для демонстрации идеи), когда фокус находится на элементе кадра с tabindex 9, нажатие клавиши tab вызовет событие PreviewKeyDown
. внутри метода u устанавливаем фокус на элемент, у которого tabindex равен 4. и после отпускания клавиши tab окна устанавливают фокус на следующий tabindex, т. е. на элемент с tabindex, равным 5., поэтому из tabindex = 9 вы прыгаете на элемент с tabindex = 5