Порядок вкладок управления в Visual Studio 2010 - PullRequest
4 голосов
/ 11 октября 2011

Существует ли простой способ изменить порядок вкладок элементов управления сложной формы в конструкторе форм Visual Studio.

Я знаю, что могу выбрать режим «Порядок табуляции», и он показывает мне все элементы управления с их индексом вкладки, но так сложно добавить новый элемент управления в середине сложной формы, и мне приходится повторно выбирать КАЖДЫЙ элемент управления на Форма снова, чтобы установить новый порядок вкладок. Я часто нахожу, что я случайно пропустил контроль, и поэтому приходится делать это снова и снова.

Я прочитал в MSDN, что, по крайней мере, должна быть возможность, удерживая клавишу Ctrl, щелкнуть элемент управления до того места, где я хочу начать переупорядочение нового элемента управления, а затем щелкнуть каждый элемент управления, чтобы установить новый порядок вкладок, но я не могу заставить это работать. Ctrl-щелчок по предыдущему элементу управления просто устанавливает для него индекс табуляции 0, и это становится новым первым элементом управления на всей форме.

Я исходил из фона delphi, и в delphi при редактировании порядка вкладок элементов управления появляется диалоговое окно со списком всех элементов управления в форме, и вы можете выбрать элемент управления из списка и переместить его вверх или вниз по списку. Гораздо проще сделать простое изменение, например, изменить порядок вкладок или добавить новый элемент управления в середину формы. Возможно, я что-то упустил, и это можно сделать легко. Если нет в Visual Studio, есть ли дополнение, которое имитирует функциональность Delphi.

С уважением Brian

Ответы [ 3 ]

3 голосов
/ 24 февраля 2012

Самый простой способ изменить порядок вкладок, если у вас слишком много элементов управления, просто откройте файл PROJECT.RC в текстовом режиме и найдите место, где настраивается ваш диалог .... например:

IDD_MESSAGE_LIST DIALOG 0, 0, 197, 162
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Message List"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,85,140,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,140,140,50,14
    CONTROL         "List1",IDC_MESSAGE_LIST,"SysListView32",WS_BORDER | WS_GROUP,5,5,165,120
    CONTROL         "",IDC_LINE,"Static",SS_ETCHEDHORZ,5,130,190,1
    CONTROL         "",IDC_CHECK_ALL,"Static",SS_BLACKFRAME | NOT WS_VISIBLE,175,5,5,5
    CONTROL         "Tree1",IDC_MESSAGE_TREE,"SysTreeView32",TVS_HASBUTTONS | WS_BORDER 
END

В промежутке от BEGIN до END ваши элементы управления ЗАКАЗЫВАЮТСЯ по ЗАКАЗУ на вкладку. Просто переместите строку, соответствующую месту, где вы хотите получить TAB ORDER. Просто поменяйте местами первые две строки, и это будет кнопка Отмена как порядок табуляции 1.

3 голосов
/ 11 октября 2011

Если добавить новый элемент управления и присвоить ему значение порядка табуляции, Visual Studio автоматически заменит остальные.Оба элемента управления будут иметь одинаковый порядок вкладок, но он будет работать.

0 голосов
/ 12 октября 2011

Поскольку вы указываете, что перестановка форм не является вариантом, вы можете рассмотреть возможность использования старой верности из CodeProject: Автоматическое управление порядком вкладок во время выполнения для Windows Forms . Он немного устарел (например, нет типизированных коллекций со строгой типизацией), но работает довольно хорошо.

TabOrderManager.cs из проекта можно скомпилировать самостоятельно, вам (I) не нужны все атрибуты компаньона IExtenderProvider и тестовый проект.

Если форма нуждается в изменении, вы можете просто добавить новые элементы управления и ниже InitializeComponent(); добавить вызов, такой как

new TabOrderManager(this).SetTabOrder(TabOrderManager.TabScheme.DownFirst);

Надеюсь, это вам подходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...