Как сфокусировать компоненты, которые содержатся в WC_TABCONTROL, используя навигацию по ключевым словам? [Дубликат]

Я соглашусь с тем, кто написал (перефразировал здесь): «Для ссылки на существующей веб-странице браузер всегда откроет ссылку на новой вкладке, если новая страница является частью того же веб-сайт как существующая веб-страница ». Для меня, по крайней мере, это «общее правило» работает в Chrome, Firefox, Opera, IE, Safari, SeaMonkey и Konqueror.

В любом случае существует менее сложный способ воспользоваться тем, что другое человек представлен. Предполагая, что мы говорим о вашем собственном веб-сайте («thissite.com» ниже), где вы хотите контролировать, что делает браузер, а затем ниже, вы хотите, чтобы «specialpage.htm» был ПУСТОЙ, в нем вообще не было HTML-кода ( экономит время на отправку данных с сервера!).

 var wnd, URL;  //global variables

 //specifying "_blank" in window.open() is SUPPOSED to keep the new page from replacing the existing page
 wnd = window.open("http://www.thissite.com/specialpage.htm", "_blank"); //get reference to just-opened page
 //if the "general rule" above is true, a new tab should have been opened.
 URL = "http://www.someothersite.com/desiredpage.htm";  //ultimate destination
 setTimeout(gotoURL(),200);  //wait 1/5 of a second; give browser time to create tab/window for empty page


 function gotoURL()
 { wnd.open(URL, "_self");  //replace the blank page, in the tab, with the desired page
   wnd.focus();             //when browser not set to automatically show newly-opened page, this MAY work
 }
3
задан Jay 20 July 2009 в 16:20
поделиться

2 ответа

Не чище. Рекомендуемый способ создания диалоговых окон с вкладками - сделать вкладки дочерними элементами диалогового окна. Элемент управления вкладкой просто контролирует, какая из страниц видима, но не является их родителем.

Это особенно важно, если вы попытаетесь настроить тему XP, работающую над диалогом.

WS_EX_CONTROLPARENT - это стиль, который должен быть установлен в реальных диалоговых окнах «tab».

Предполагаю, что вы установили WS_TABSTOP в сам элемент управления вкладками? Я предполагаю, что конфликты WS_TABSTOP и WS_EX_CONTROLPARENT конфликтуют, когда они сообщают диспетчеру диалога делать две совершенно разные и противоречивые вещи, когда цикл табуляции достигает элемента управления.

Наконец, я не вижу никаких причина в том, что мерцание должно увеличиваться, потому что страницы диалога являются дочерними элементами диалогового окна, а не элементом управления вкладками.

3
ответ дан Chris Becke 18 August 2018 в 10:17
поделиться
  • 1
    Работает на меня. Слишком много образцов в сети, чтобы сделать диалоги дочерними элементами элемента управления вкладкой, и MS не дает понять это в документах. С тех пор я включил тему вкладки xp, и она отлично работает. – Jay 16 December 2009 в 14:25

Вы не можете AFAIK, потому что табуляция циклически проходит через дочерние элементы управления по дизайну. Лучшее, что вы можете сделать, это предварительно обработать событие keydown tab и, если после фокуса находится последний элемент управления в диалоговом окне, сфокусируйте вкладку и отбросьте событие. Не чище, чем решение, которое у вас уже есть, мне кажется.

0
ответ дан Roel 18 August 2018 в 10:17
поделиться
  • 1
    Кажется, что DialogProc не получает возможности обрабатывать клавишу Tab, и я не хочу писать свой собственный цикл сообщений, чтобы исправить это. Поэтому я решил просто оставить решение, которое у меня есть, и перешел. Я удивлен, что я не мог найти никого другого с той же проблемой в Интернете, хотя. Все говорят использовать WS_EX_CONTROLPARENT, который затем создает эту новую проблему. – Jay 24 July 2009 в 19:38
Другие вопросы по тегам:

Похожие вопросы: