Порядок вкладок управления в Visual Studio 2010
Существует ли простой способ изменить порядок вкладок элементов управления сложной формы в конструкторе форм Visual Studio.
Я знаю, что могу выбрать режим "Порядок табуляции", и он показывает мне все элементы управления с их индексом вкладки, но это такая боль - добавить новый элемент управления в середине сложной формы, и мне приходится снова выбирать КАЖДЫЙ элемент управления в форме. установить новый порядок вкладок. Я часто нахожу, что я случайно пропустил контроль, и поэтому должен делать это снова и снова.
Я прочитал в MSDN, что, по крайней мере, должна быть возможность, удерживая клавишу Ctrl, щелкнуть элемент управления до того места, где я хочу начать переупорядочение нового элемента управления, а затем щелкнуть каждый элемент управления, чтобы установить новый порядок вкладок, но я не могу заставить это работать. Ctrl-клик по предыдущему элементу управления просто устанавливает для него индекс табуляции 0, и это становится новым первым элементом управления во всей форме.
Я исходил из фона Delphi, и в Delphi при редактировании порядка вкладок элементов управления появляется диалоговое окно со списком всех элементов управления в форме, и вы можете выбрать элемент управления из списка и переместить его вверх или вниз по списку. Гораздо проще сделать простое изменение, например, изменить порядок вкладок или добавить новый элемент управления в середину формы. Возможно, я что-то упустил, и это можно сделать легко. Если нет в Visual Studio, есть ли дополнение, которое имитирует функциональность Delphi.
С уважением, Брайан
3 ответа
Если вы добавите новый элемент управления и зададите ему значение порядка табуляции, Visual Studio автоматически заменит остальные. Оба элемента управления будут иметь одинаковый порядок вкладок, но он будет работать.
Самый простой способ изменить порядок вкладок, если у вас слишком много контроля, просто откройте 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.
Поскольку вы указываете, что перестановка форм не является вариантом, вы можете рассмотреть возможность использования старой верности из CodeProject: Автоматическое управление порядком вкладок во время выполнения для Windows Forms. Он немного устарел (например, нет типизированных коллекций со строгой типизацией), но работает довольно хорошо.
TabOrderManager.cs
из проекта можно составить самостоятельно, вам (мне) не нужны все атрибуты собеседника IExtenderProvider
и тестовый проект.
Если форма нуждается в изменении, вы можете просто добавить новые элементы управления и ниже InitializeComponent();
добавить звонок как
new TabOrderManager(this).SetTabOrder(TabOrderManager.TabScheme.DownFirst);
Надеюсь, это вам подходит.